diff --git a/build.gradle b/build.gradle index c50ec09..7ddb1d1 100644 --- a/build.gradle +++ b/build.gradle @@ -1,13 +1,15 @@ import java.nio.charset.StandardCharsets import java.nio.file.Paths +import com.smartthings.deployment.slack.FileUpload +import com.smartthings.deployment.slack.Message apply plugin: 'groovy' apply plugin: 'smartthings-executable-deployment' -apply plugin: 'smartthings-hipchat' +apply plugin: 'smartthings-slack' buildscript { dependencies { - classpath "com.smartthings.deployment:executable-deployment-scripts:1.0.6" + classpath "com.smartthings.deployment:executable-deployment-scripts:1.0.7" } repositories { mavenLocal() @@ -30,7 +32,43 @@ repositories { dependencies { } -hipchatShareFile { +slackSendMessage { + String branch = project.hasProperty('branch') ? project.property('branch') : 'unknown' + String token = project.hasProperty('slackToken') ? project.property('slackToken') : null + String webhookUrl = project.hasProperty('slackWebhookUrl') ? project.property('slackWebhookUrl') : null + String channel = project.hasProperty('slackChannel') ? project.property('slackChannel') : null + String drinks = 'https://dl.dropboxusercontent.com/s/m1z5mpd3c83lwev/minion_beer.jpeg?dl=0' + String wolverine = 'https://dl.dropboxusercontent.com/s/4lbjqzvm2v033u9/minion_wolverine.jpg?dl=0' + String beach = 'https://dl.dropboxusercontent.com/s/rqrfgxk53gfng69/minion_beach.png?dl=0' + String iconUrl + String color + String messageText + String username + switch (branch) { + case 'master': + username = 'Hickory' + iconUrl = wolverine + color = '#35D0F2' + messageText = 'Began deployment of _SmartThingsPublic[master]_ branch to the _Dev_ environments.' + break + case 'staging': + username = 'Dickory' + iconUrl = beach + color = '#FFDE20' + messageText = 'Began deployment of _SmartThingsPublic[staging]_ branch to the _Staging_ environments.' + break + case 'production': + username = 'Dock' + iconUrl = drinks + color = '#FF1D23' + messageText = 'Began deployment of _SmartThingsPublic[production]_ branch to the _Prod_ environments.' + break + default: + username = 'Hickory' + iconUrl = wolverine + color = '#35D0F2' + messageText = "Began deployment of an _SmartThingsPublic[${branch}]_ branch. Have no idea what's going on." + } List archives = [] File rootDir = new File("${project.buildDir}/archives") if (rootDir.exists()) { @@ -43,19 +81,25 @@ hipchatShareFile { } } } + Date date = new Date() + String fileDate = date.format('yyyy-MM-dd_HH-mm-ss', TimeZone.getTimeZone('GMT')) - // Set task properties - data = archives.join('\n').getBytes(StandardCharsets.UTF_8) - fileName = 'deployment-notes.txt' - contentType = 'text/html' -} - -hipchatSendNotification { - String branch = project.hasProperty('branch') ? project.property('branch') : 'unknown' - message = "Began executable deploy of SmartThingsPublic(${branch})." - if (branch == 'master') { - message += ' (dev shards)' - } - color = branch == 'master' ? 'yellow' : 'red' - notify = true + // Required Task Arguments. + file = new FileUpload( + data: archives.join('\n').getBytes(StandardCharsets.UTF_8), + filename: "deployment-notes-${fileDate}.txt", + title: 'Deployment Notes', + channels: channel, + token: token, + color: color + ) + message = new Message( + webhookUrl: webhookUrl, + username: username, + asUser: true, + iconUrl: iconUrl, + channel: channel, + fallback: 'Deployment Notification', + text: messageText + ) } diff --git a/circle.yml b/circle.yml index b2a02a1..3785924 100644 --- a/circle.yml +++ b/circle.yml @@ -15,13 +15,11 @@ deployment: develop: branch: master commands: - - ./gradlew deployArchives -PsmartThingsArtifactoryUserName=$ARTIFACTORY_USERNAME -PsmartThingsArtifactoryPassword=$ARTIFACTORY_PASSWORD -Ps3Buckets="$S3_BUCKETS_DEV" - - ./gradlew hipchatSendNotification -PsmartThingsArtifactoryUserName=$ARTIFACTORY_USERNAME -PsmartThingsArtifactoryPassword=$ARTIFACTORY_PASSWORD -Pbranch=$CIRCLE_BRANCH - - ./gradlew hipchatShareFile -PsmartThingsArtifactoryUserName=$ARTIFACTORY_USERNAME -PsmartThingsArtifactoryPassword=$ARTIFACTORY_PASSWORD + - ./gradlew deployArchives -PsmartThingsArtifactoryUserName="$ARTIFACTORY_USERNAME" -PsmartThingsArtifactoryPassword="$ARTIFACTORY_PASSWORD" -Ps3Buckets="$S3_BUCKETS_DEV" + - ./gradlew slackSendMessage -PsmartThingsArtifactoryUserName="$ARTIFACTORY_USERNAME" -PsmartThingsArtifactoryPassword="$ARTIFACTORY_PASSWORD" -Pbranch="$CIRCLE_BRANCH" -PslackToken="$SLACK_TOKEN" -PslackWebhookUrl="$SLACK_WEBHOOK_URL" -PslackChannel="$SLACK_CHANNEL" --stacktrace stage: branch: staging commands: - - ./gradlew deployArchives -PsmartThingsArtifactoryUserName=$ARTIFACTORY_USERNAME -PsmartThingsArtifactoryPassword=$ARTIFACTORY_PASSWORD -Ps3Buckets="$S3_BUCKETS_STAGE" - - ./gradlew hipchatSendNotification -PsmartThingsArtifactoryUserName=$ARTIFACTORY_USERNAME -PsmartThingsArtifactoryPassword=$ARTIFACTORY_PASSWORD -Pbranch=$CIRCLE_BRANCH - - ./gradlew hipchatShareFile -PsmartThingsArtifactoryUserName=$ARTIFACTORY_USERNAME -PsmartThingsArtifactoryPassword=$ARTIFACTORY_PASSWORD + - ./gradlew deployArchives -PsmartThingsArtifactoryUserName="$ARTIFACTORY_USERNAME" -PsmartThingsArtifactoryPassword="$ARTIFACTORY_PASSWORD" -Ps3Buckets="$S3_BUCKETS_STAGE" + - ./gradlew slackSendMessage -PsmartThingsArtifactoryUserName="$ARTIFACTORY_USERNAME" -PsmartThingsArtifactoryPassword="$ARTIFACTORY_PASSWORD" -Pbranch="$CIRCLE_BRANCH" -PslackToken="$SLACK_TOKEN" -PslackWebhookUrl="$SLACK_WEBHOOK_URL" -PslackChannel="$SLACK_CHANNEL" --stacktrace