From e188be704a95e31ccae77f430ad275e0b9bba50a Mon Sep 17 00:00:00 2001 From: tgsiegel <tgsiegel@umd.edu> Date: Mon, 18 Apr 2022 12:12:46 -0400 Subject: [PATCH] fill out slack integration --- .groovylintrc.json | 20 ++++ dawn-cli/dev | 83 ++++++++--------- dawn-cli/staging | 83 ++++++++--------- dawn-client/dev | 59 +++++++----- dawn-client/staging | 62 ++++++++----- dawn-manager/dev | 62 ++++++++----- dawn-manager/staging | 62 ++++++++----- vars/backendDevServicePipeline.groovy | 100 ++++++++++++-------- vars/backendStagingServicePipeline.groovy | 107 +++++++++++++--------- vars/slack_send_failure.groovy | 1 - vars/slack_send_start.groovy | 2 +- vars/slack_send_success.groovy | 1 - 12 files changed, 378 insertions(+), 264 deletions(-) create mode 100644 .groovylintrc.json diff --git a/.groovylintrc.json b/.groovylintrc.json new file mode 100644 index 0000000..80e91ed --- /dev/null +++ b/.groovylintrc.json @@ -0,0 +1,20 @@ +{ + "extends": "recommended", + "rules": { + "CompileStatic": { + "enabled": false + }, + "DuplicateStringLiteral": { + "enabled": false + }, + "LineLength": { + "enabled": false + }, + "MethodReturnTypeRequired": { + "enabled": false + }, + "NoDef": { + "enabled": false + } + } +} \ No newline at end of file diff --git a/dawn-cli/dev b/dawn-cli/dev index ef9ef92..e9a4d1f 100644 --- a/dawn-cli/dev +++ b/dawn-cli/dev @@ -1,61 +1,58 @@ pipeline { - agent {label "node3"} - tools { + agent { label 'node3' } + tools { go 'go-1.16' - } - stages { - - stage('notify') { - steps { - script { - slack_send_start() - } - } } - - stage('build new dawn-cli') { - steps { - git branch: 'main', + stages { + stage('notify') { + steps { + script { + slack_send_start() + } + } + } + + stage('build new dawn-cli') { + steps { + git branch: 'main', credentialsId: 'tucker-gitlab-login', url: 'https://gitlab.cs.umd.edu/dawn/go-backend/dawn-cli' - sh """ - go build + sh ''' + go build sudo cp dawn-cli /usr/local/bin/dawn-cli - """ + ''' + } } - } - - stage('cleanup old images') { - steps { - sh ''' + stage('cleanup old images') { + steps { + sh ''' docker rmi $(docker images | grep "dawn/.*-test" | awk '{print $3}') --force || true docker rmi $(docker images | grep "<none>" | awk '{print $3}') --force || true ''' + } } - } - - stage('build new dawn-cli image') { - steps { - sh ''' + + stage('build new dawn-cli image') { + steps { + sh ''' docker build -t dawn/dawn-cli . ''' + } } } - - } - post { - success { - script { - slack_send_success() - } - } - failure { - script { - slack_send_failure() - } - } - } -} \ No newline at end of file + post { + success { + script { + slack_send_success() + } + } + failure { + script { + slack_send_failure() + } + } + } +} diff --git a/dawn-cli/staging b/dawn-cli/staging index aa3c5a5..6263608 100644 --- a/dawn-cli/staging +++ b/dawn-cli/staging @@ -1,61 +1,58 @@ pipeline { - agent {label "node2"} - tools { + agent { label 'node2' } + tools { go 'go-1.16' - } - stages { - - stage('build new dawn-cli') { - steps { - git branch: 'main', + } + stages { + stage('notify') { + steps { + script { + slack_send_start() + } + } + } + + stage('build new dawn-cli') { + steps { + git branch: 'main', credentialsId: 'tucker-gitlab-login', url: 'https://gitlab.cs.umd.edu/dawn/go-backend/dawn-cli' - sh """ - go build + sh ''' + go build sudo cp dawn-cli /usr/local/bin/dawn-cli - """ + ''' + } } - } - - stage('cleanup old images') { - steps { - sh ''' + stage('cleanup old images') { + steps { + sh ''' docker rmi $(docker images | grep "dawn/.*-test" | awk '{print $3}') --force || true docker rmi $(docker images | grep "<none>" | awk '{print $3}') --force || true ''' + } } - } - - // stage('cleanup old images') { - // steps { - // sh ''' - // docker image prune --filter "until=168h" --filter "label!=latest" || true - // ''' - // sh ''' - // docker rmi $(docker images | grep 'dev-test') || true - // ''' - // } - // } - - stage('build new dawn-cli image') { - steps { - sh ''' + stage('build new dawn-cli image') { + steps { + sh ''' docker build -t dawn/dawn-cli . ''' + } } } - - // stage('redeploy') { - // steps { - // sh """ - // dawn-cli deploy - // """ - // } - // } - - } -} \ No newline at end of file + post { + success { + script { + slack_send_success() + } + } + failure { + script { + slack_send_failure() + } + } + } +} diff --git a/dawn-client/dev b/dawn-client/dev index 076bb42..539a880 100644 --- a/dawn-client/dev +++ b/dawn-client/dev @@ -1,36 +1,51 @@ pipeline { - agent {label "node3"} - tools {nodejs "node"} - stages { - - stage('build') { - steps { - sh """ + agent { label 'node3' } + tools { nodejs 'node' } + stages { + stage('notify') { + steps { + script { + slack_send_start() + } + } + } + stage('build') { + steps { + sh ''' npm i npm run build:dev - """ + ''' + } } - } - - stage('copy build') { - steps { - sh ''' + stage('copy build') { + steps { + sh ''' sudo rm -rf /var/www/dawn_dev/build sudo cp -r build /var/www/dawn_dev ''' + } } - } - - - stage('restart nginx') { - steps { - sh ''' + stage('restart nginx') { + steps { + sh ''' sudo service nginx restart ''' + } + } + } + + post { + success { + script { + slack_send_success() + } + } + failure { + script { + slack_send_failure() + } } } - - } -} \ No newline at end of file +} diff --git a/dawn-client/staging b/dawn-client/staging index ff9fc93..215f9f9 100644 --- a/dawn-client/staging +++ b/dawn-client/staging @@ -1,40 +1,56 @@ pipeline { - agent {label "node2"} - tools {nodejs "node"} - stages { - - stage('build') { - steps { - git branch: 'staging', + agent { label 'node2' } + tools { nodejs 'node' } + stages { + stage('notify') { + steps { + script { + slack_send_start() + } + } + } + + stage('build') { + steps { + git branch: 'staging', credentialsId: 'tucker-gitlab-login', url: 'https://gitlab.cs.umd.edu/dawn/dawn-client' - sh """ + sh ''' npm i npm run build:staging - """ + ''' + } } - } - - stage('copy build') { - steps { - sh ''' + stage('copy build') { + steps { + sh ''' sudo rm -rf /var/www/dawn_staging/build sudo cp -r build /var/www/dawn_staging/build ''' + } } - } - - - stage('restart nginx') { - steps { - sh ''' + stage('restart nginx') { + steps { + sh ''' sudo service nginx restart ''' + } + } + } + + post { + success { + script { + slack_send_success() + } + } + failure { + script { + slack_send_failure() + } } } - - } -} \ No newline at end of file +} diff --git a/dawn-manager/dev b/dawn-manager/dev index e5993cf..23a213a 100644 --- a/dawn-manager/dev +++ b/dawn-manager/dev @@ -1,41 +1,57 @@ pipeline { - agent {label "master"} - tools {nodejs "node"} - stages { - - stage('build') { - steps { - git branch: 'main', + agent { label 'master' } + tools { nodejs 'node' } + stages { + stage('notify') { + steps { + script { + slack_send_start() + } + } + } + + stage('build') { + steps { + git branch: 'main', credentialsId: 'tucker-gitlab-login', - url: "https://gitlab.cs.umd.edu/dawn/go-backend/dawn-manager.git" + url: 'https://gitlab.cs.umd.edu/dawn/go-backend/dawn-manager.git' - sh """ + sh ''' npm i npm run build - """ + ''' + } } - } - - stage('copy build') { - steps { - sh ''' + stage('copy build') { + steps { + sh ''' sudo rm -rf /var/www/dawn_dev/_admin sudo mkdir /var/www/dawn_dev/_admin sudo cp -r build/* /var/www/dawn_dev/_admin ''' + } } - } - - - stage('restart nginx') { - steps { - sh ''' + stage('restart nginx') { + steps { + sh ''' sudo service nginx restart ''' + } + } + } + + post { + success { + script { + slack_send_success() + } + } + failure { + script { + slack_send_failure() + } } } - - } } diff --git a/dawn-manager/staging b/dawn-manager/staging index 6c53846..9b0fab4 100644 --- a/dawn-manager/staging +++ b/dawn-manager/staging @@ -1,41 +1,57 @@ pipeline { - agent {label "node2"} - tools {nodejs "node"} - stages { - - stage('build') { - steps { - git branch: 'main', + agent { label 'node2' } + tools { nodejs 'node' } + stages { + stage('notify') { + steps { + script { + slack_send_start() + } + } + } + + stage('build') { + steps { + git branch: 'main', credentialsId: 'tucker-gitlab-login', - url: "https://gitlab.cs.umd.edu/dawn/go-backend/dawn-manager.git" + url: 'https://gitlab.cs.umd.edu/dawn/go-backend/dawn-manager.git' - sh """ + sh ''' npm i npm run build-staging - """ + ''' + } } - } - - stage('copy build') { - steps { - sh ''' + stage('copy build') { + steps { + sh ''' sudo rm -rf /var/www/dawn_staging/_admin sudo mkdir /var/www/dawn_staging/_admin sudo cp -r build/* /var/www/dawn_staging/_admin ''' + } } - } - - - stage('restart nginx') { - steps { - sh ''' + stage('restart nginx') { + steps { + sh ''' sudo service nginx restart ''' + } + } + } + + post { + success { + script { + slack_send_success() + } + } + failure { + script { + slack_send_failure() + } } } - - } } diff --git a/vars/backendDevServicePipeline.groovy b/vars/backendDevServicePipeline.groovy index 9ee438d..0b18fa0 100644 --- a/vars/backendDevServicePipeline.groovy +++ b/vars/backendDevServicePipeline.groovy @@ -1,61 +1,81 @@ def call(String serviceName) { - pipeline { - agent { - node { - label "node3" - customWorkspace "${serviceName}" - } - } - tools { - go 'go-1.16' - } - stages { - stage('test') { - steps { - sh """ + pipeline { + agent { + node { + label 'node3' + customWorkspace "${serviceName}" + } + } + tools { + go 'go-1.16' + } + stages { + stage('notify') { + steps { + script { + slack_send_start() + } + } + } + stage('test') { + steps { + sh ''' dawn-cli test - """ - } - } + ''' + } + } - stage('build') { - steps { - sh """ + stage('build') { + steps { + sh ''' dawn-cli build-image -p . -e dev - """ - } - } + ''' + } + } - stage('update backend services') { - steps { - sh ''' + stage('update backend services') { + steps { + sh ''' curl -o docker-compose-dev.yml --header "PRIVATE-TOKEN: y2FHtFXMC8X13onnEfiE" "https://gitlab.cs.umd.edu/api/v4/projects/16574/repository/files/docker-compose-staging.yml/raw?ref=main" curl -o shared-compose.yml --header "PRIVATE-TOKEN: y2FHtFXMC8X13onnEfiE" "https://gitlab.cs.umd.edu/api/v4/projects/16574/repository/files/shread-compose.yml/raw?ref=main" curl -o prometheus.yml --header "PRIVATE-TOKEN: y2FHtFXMC8X13onnEfiE" "https://gitlab.cs.umd.edu/api/v4/projects/16574/repository/files/prometheus.yml/raw?ref=main" curl -o prometheus.rules.yml --header "PRIVATE-TOKEN: y2FHtFXMC8X13onnEfiE" "https://gitlab.cs.umd.edu/api/v4/projects/16574/repository/files/prometheus.rules.yml/raw?ref=main" curl -o rabbitmq.conf --header "PRIVATE-TOKEN: y2FHtFXMC8X13onnEfiE" "https://gitlab.cs.umd.edu/api/v4/projects/16574/repository/files/rabbitmq.conf/raw?ref=main" - + mkdir elk_config || true curl -o logstash-compose.yml --header "PRIVATE-TOKEN: y2FHtFXMC8X13onnEfiE" "https://gitlab.cs.umd.edu/api/v4/projects/16574/repository/files/logstash-compose.conf/raw?ref=main" curl -o elk_config/elasticsearch.yml --header "PRIVATE-TOKEN: y2FHtFXMC8X13onnEfiE" "https://gitlab.cs.umd.edu/api/v4/projects/16574/repository/files/elk_config%2Felasticsearch.yml/raw?ref=main" curl -o elk_config/filebeat.yml --header "PRIVATE-TOKEN: y2FHtFXMC8X13onnEfiE" "https://gitlab.cs.umd.edu/api/v4/projects/16574/repository/files/elk_config%2Ffilebeat.yml/raw?ref=main" ''' - sh "dawn-cli update -s ${serviceName} -e dev" - } - } + sh "dawn-cli update -s ${serviceName} -e dev" + } + } - stage('cleanup') { - steps { - sh ''' + stage('cleanup') { + steps { + sh ''' docker rmi $(docker images | grep "dawn/.*-test" | awk '{print $3}') --force || true ''' + } + } + } + // post { + // always { + // cobertura autoUpdateHealth: false, autoUpdateStability: false, coberturaReportFile: '**/coverage.xml', enableNewApi: true, failUnhealthy: false, failUnstable: false, lineCoverageTargets: '80, 40, 60', maxNumberOfBuilds: 0, onlyStable: false, sourceEncoding: 'ASCII', zoomCoverageChart: false + // } + // } + } + + post { + success { + script { + slack_send_success() + } + } + failure { + script { + slack_send_failure() + } } } - } -// post { -// always { -// cobertura autoUpdateHealth: false, autoUpdateStability: false, coberturaReportFile: '**/coverage.xml', enableNewApi: true, failUnhealthy: false, failUnstable: false, lineCoverageTargets: '80, 40, 60', maxNumberOfBuilds: 0, onlyStable: false, sourceEncoding: 'ASCII', zoomCoverageChart: false -// } -// } } -} \ No newline at end of file diff --git a/vars/backendStagingServicePipeline.groovy b/vars/backendStagingServicePipeline.groovy index 62517b9..ce1302e 100644 --- a/vars/backendStagingServicePipeline.groovy +++ b/vars/backendStagingServicePipeline.groovy @@ -1,69 +1,88 @@ def call(String repo, String branch, String serviceName) { pipeline { - agent { label 'node2' } - tools { - go 'go-1.16' - } - options { - buildDiscarder logRotator(artifactDaysToKeepStr: '', artifactNumToKeepStr: '5', daysToKeepStr: '', numToKeepStr: '5') - } - stages { - - stage('checkout') { - steps { - git branch: branch, + agent { label 'node2' } + tools { + go 'go-1.16' + } + options { + buildDiscarder logRotator(artifactDaysToKeepStr: '', artifactNumToKeepStr: '5', daysToKeepStr: '', numToKeepStr: '5') + } + stages { + stage('checkout') { + steps { + git branch: branch, credentialsId: 'tucker-gitlab-login', url: repo - } - } - - stage('test') { - steps { - sh """ + } + } + + stage('notify') { + steps { + script { + slack_send_start() + } + } + } + + stage('test') { + steps { + sh ''' dawn-cli test - """ - } - } + ''' + } + } - stage('build') { - steps { - sh """ + stage('build') { + steps { + sh ''' dawn-cli build-image -p . -e staging - """ - } - } + ''' + } + } - stage('update backend services') { - steps { - sh ''' + stage('update backend services') { + steps { + sh ''' curl -o docker-compose-dev.yml --header "PRIVATE-TOKEN: y2FHtFXMC8X13onnEfiE" "https://gitlab.cs.umd.edu/api/v4/projects/16574/repository/files/docker-compose-staging.yml/raw?ref=main" curl -o shared-compose.yml --header "PRIVATE-TOKEN: y2FHtFXMC8X13onnEfiE" "https://gitlab.cs.umd.edu/api/v4/projects/16574/repository/files/shread-compose.yml/raw?ref=main" curl -o prometheus.yml --header "PRIVATE-TOKEN: y2FHtFXMC8X13onnEfiE" "https://gitlab.cs.umd.edu/api/v4/projects/16574/repository/files/prometheus.yml/raw?ref=main" curl -o prometheus.rules.yml --header "PRIVATE-TOKEN: y2FHtFXMC8X13onnEfiE" "https://gitlab.cs.umd.edu/api/v4/projects/16574/repository/files/prometheus.rules.yml/raw?ref=main" curl -o rabbitmq.conf --header "PRIVATE-TOKEN: y2FHtFXMC8X13onnEfiE" "https://gitlab.cs.umd.edu/api/v4/projects/16574/repository/files/rabbitmq.conf/raw?ref=main" - + mkdir elk_config || true curl -o logstash-compose.yml --header "PRIVATE-TOKEN: y2FHtFXMC8X13onnEfiE" "https://gitlab.cs.umd.edu/api/v4/projects/16574/repository/files/logstash-compose.conf/raw?ref=main" curl -o elk_config/elasticsearch.yml --header "PRIVATE-TOKEN: y2FHtFXMC8X13onnEfiE" "https://gitlab.cs.umd.edu/api/v4/projects/16574/repository/files/elk_config%2Felasticsearch.yml/raw?ref=main" curl -o elk_config/filebeat.yml --header "PRIVATE-TOKEN: y2FHtFXMC8X13onnEfiE" "https://gitlab.cs.umd.edu/api/v4/projects/16574/repository/files/elk_config%2Ffilebeat.yml/raw?ref=main" ''' - sh "dawn-cli update -s ${serviceName} -e staging -d dawn-server" - } - } + sh "dawn-cli update -s ${serviceName} -e staging -d dawn-server" + } + } - stage('cleanup') { - steps { - sh ''' + stage('cleanup') { + steps { + sh ''' docker rmi $(docker images | grep "dawn/.*-test" | awk '{print $3}') --force || true ''' + } + } } + // post { + // always { + // cobertura autoUpdateHealth: false, autoUpdateStability: false, coberturaReportFile: '**/coverage.xml', enableNewApi: true, failUnhealthy: false, failUnstable: false, lineCoverageTargets: '80, 40, 60', maxNumberOfBuilds: 0, onlyStable: false, sourceEncoding: 'ASCII', zoomCoverageChart: false + // } + // } } - } - // post { - // always { - // cobertura autoUpdateHealth: false, autoUpdateStability: false, coberturaReportFile: '**/coverage.xml', enableNewApi: true, failUnhealthy: false, failUnstable: false, lineCoverageTargets: '80, 40, 60', maxNumberOfBuilds: 0, onlyStable: false, sourceEncoding: 'ASCII', zoomCoverageChart: false - // } - // } + post { + success { + script { + slack_send_success() + } + } + failure { + script { + slack_send_failure() + } + } + } } -} \ No newline at end of file diff --git a/vars/slack_send_failure.groovy b/vars/slack_send_failure.groovy index d6720b8..a63b09d 100644 --- a/vars/slack_send_failure.groovy +++ b/vars/slack_send_failure.groovy @@ -1,4 +1,3 @@ def call() { - BUILD_TRIGGERED_BY = "${currentBuild.getBuildCauses()[0].shortDescription} / ${currentBuild.getBuildCauses()[0].userId}" slackSend(channel: "ci", color: "danger", message: "${JOB_NAME}-#${BUILD_NUMBER}-${GIT_BRANCH} failed after ${currentBuild.durationString} (<${BUILD_URL}|Open>)") } diff --git a/vars/slack_send_start.groovy b/vars/slack_send_start.groovy index 2343a18..baf9322 100644 --- a/vars/slack_send_start.groovy +++ b/vars/slack_send_start.groovy @@ -1,4 +1,4 @@ def call() { - BUILD_TRIGGERED_BY = "${currentBuild.getBuildCauses()[0].shortDescription} / ${currentBuild.getBuildCauses()[0].userId}" + BUILD_TRIGGERED_BY = "${currentBuild.getBuildCauses()[0].userId}" slackSend(channel: "ci", message: "${JOB_NAME}-#${BUILD_NUMBER}-${GIT_BRANCH} triggered by ${BUILD_TRIGGERED_BY} (<${BUILD_URL}|Open>)") } diff --git a/vars/slack_send_success.groovy b/vars/slack_send_success.groovy index 26927b0..9240fd1 100644 --- a/vars/slack_send_success.groovy +++ b/vars/slack_send_success.groovy @@ -1,4 +1,3 @@ def call() { - BUILD_TRIGGERED_BY = "${currentBuild.getBuildCauses()[0].shortDescription} / ${currentBuild.getBuildCauses()[0].userId}" slackSend(channel: "ci", color: "good", message: "${JOB_NAME}-#${BUILD_NUMBER}-${GIT_BRANCH} success after ${currentBuild.durationString} (<${BUILD_URL}|Open>)") } -- GitLab