diff --git a/build.gradle b/build.gradle index f8d949f..34efa69 100644 --- a/build.gradle +++ b/build.gradle @@ -7,7 +7,7 @@ apply plugin: 'java' sourceCompatibility = 1.5 -version = '2.0.0' +version = '2.1.1' configurations { deploy @@ -17,7 +17,9 @@ dependencies { compile files('libs/openapi.jar', 'libs/server-api.jar' , 'libs/common-api.jar' , 'libs/servlet-api.jar') compile 'com.google.code.gson:gson:2.+' compile 'org.jdom:jdom:1+' + compile 'joda-time:joda-time:2.3' deploy 'com.google.code.gson:gson:2.+' + deploy 'joda-time:joda-time:2.3' } diff --git a/src/main/java/com/tapadoo/slacknotifier/SlackServerAdapter.java b/src/main/java/com/tapadoo/slacknotifier/SlackServerAdapter.java index 2a52e24..cb63f07 100644 --- a/src/main/java/com/tapadoo/slacknotifier/SlackServerAdapter.java +++ b/src/main/java/com/tapadoo/slacknotifier/SlackServerAdapter.java @@ -9,6 +9,10 @@ import jetbrains.buildServer.users.SUser; import jetbrains.buildServer.users.UserSet; import jetbrains.buildServer.vcs.SelectPrevBuildPolicy; +import org.joda.time.Duration; +import org.joda.time.Period; +import org.joda.time.format.PeriodFormatter; +import org.joda.time.format.PeriodFormatterBuilder; import java.io.BufferedOutputStream; import java.io.IOException; @@ -124,10 +128,25 @@ else if( projectSettings != null && projectSettings.getChannel() != null && proj String message = ""; + PeriodFormatter durationFormatter = new PeriodFormatterBuilder() + .printZeroRarelyFirst() + .appendHours() + .appendSuffix(" hour", " hours") + .appendSeparator(" ") + .printZeroRarelyLast() + .appendMinutes() + .appendSuffix(" minute", "minutes") + .appendSeparator(" and ") + .appendSeconds() + .appendSuffix(" second", " seconds") + .toFormatter(); + + Duration buildDuration = new Duration(1000*build.getDuration()); + JsonObject payloadObj = new JsonObject(); payloadObj.addProperty("channel" , channel); payloadObj.addProperty("username" , "TeamCity"); - payloadObj.addProperty("text", String.format("Project '%s' built successfully." , build.getFullName())); + payloadObj.addProperty("text", String.format("Project '%s' built successfully in %s." , build.getFullName() , durationFormatter.print(buildDuration.toPeriod()))); payloadObj.addProperty("icon_url",slackConfig.getLogoUrl()); if( commitMsg.length() > 0 ) diff --git a/teamcity-plugin.xml b/teamcity-plugin.xml index 6f75a88..fcce112 100644 --- a/teamcity-plugin.xml +++ b/teamcity-plugin.xml @@ -4,7 +4,7 @@ slackNotifier Slack Notifier - 2.0.0 + 2.1.1 Post build success notifications to Slack Tapadoo