From 94d7b04002e6b938014750cf736ab84d33d32f22 Mon Sep 17 00:00:00 2001 From: richard Date: Sun, 19 Apr 2020 09:27:03 -0400 Subject: [PATCH] convert prometheus jenkinsfile to declarative pipeline --- dockerfiles/services/prometheus/Jenkinsfile | 107 ++++++++++++++------ 1 file changed, 75 insertions(+), 32 deletions(-) diff --git a/dockerfiles/services/prometheus/Jenkinsfile b/dockerfiles/services/prometheus/Jenkinsfile index 924e79f..1e1c5cb 100644 --- a/dockerfiles/services/prometheus/Jenkinsfile +++ b/dockerfiles/services/prometheus/Jenkinsfile @@ -1,42 +1,85 @@ -node('docker') { - def service_name = 'metrics' - def app_name = 'prometheus' - def workdir = 'dockerfiles/services/prometheus' - def build_file = 'docker-compose.yml' - def deployment_file = 'docker-compose-prod.yml' - - stage('prepare') { - git credentialsId: 'f1f58215-c789-44a2-9b72-50e4425cb061', url: 'ssh://git@git.xai-corp.net:10022/xai-corp.net/provisioning.git' - sh 'ls' +pipeline { + environment { + service_name = 'metrics' + build_file = 'docker-compose.yml' + deployment_file = 'docker-compose-prod.yml' + DOCKERFILE = 'Dockerfile' + APP_NAME = 'prometheus' + APP_PORT = '80' + WORKDIR = 'dockerfiles/services/prometheus' + DOCKER_HOST = 'dkhost:2376' } - stage('build') { - dir(workdir) { - docker.withRegistry('http://dkregistry.xai-corp.net:5000') { - def customImage = docker.build("dkregistry.xai-corp.net:5000/xaicorp/${app_name}:latest", "-f Dockerfile .") - customImage.push() + agent { label 'docker' } + options { + buildDiscarder(logRotator(numToKeepStr: '6')) + } + triggers { + cron('@monthly') + } + + stages { + stage('prepare') { + steps { + checkout scm +// git credentialsId: 'f1f58215-c789-44a2-9b72-50e4425cb061', url: 'ssh://git@git.xai-corp.net:10022/xai-corp.net/provisioning.git' + + sh 'ls' } - sh "docker-compose -f ${deployment_file} pull" } - } - stage('deploy') { - dir(workdir) { - sh """ - docker stack deploy -c ${deployment_file} ${service_name} - docker service update -q ${service_name}_prometheus - docker service update -q ${service_name}_statsd_exporter - docker service update -q ${service_name}_fluentd_exporter - docker service update -q ${service_name}_node_exporter - docker service update -q ${service_name}_graphana - """ + stage('build') { + steps { + dir(WORKDIR) { + script { + docker.withRegistry('http://dkregistry.xai-corp.net:5000', 'b11d7f1a-81ac-4daf-8842-56afc0d2370e') { + def customImage = docker.build("dkregistry.xai-corp.net:5000/xaicorp/${app_name}:latest", "-f Dockerfile .") + customImage.push() + } + withDockerRegistry(credentialsId: 'b11d7f1a-81ac-4daf-8842-56afc0d2370e', url: 'http://dkregistry.xai-corp.net:5000') { + sh "docker-compose -f ${deployment_file} pull" + } + } + } + } } - } - stage('smoke tests') { - dir(workdir) { - sleep 60 - sh "curl -If https://metrics.xai-corp.net" + stage('deploy') { + steps { + dir(WORKDIR) { + sh """ + export DOCKER_HOST=${DOCKER_HOST} + docker stack deploy --with-registry-auth -c ${deployment_file} ${service_name} + (cd ../ && chmod +x ./scaleout.sh && ./scaleout.sh ${service_name}_prometheus 60) & + (cd ../ && chmod +x ./scaleout.sh && ./scaleout.sh ${service_name}_statsd_exporter 60) & + (cd ../ && chmod +x ./scaleout.sh && ./scaleout.sh ${service_name}_fluentd_exporter 60) & + (cd ../ && chmod +x ./scaleout.sh && ./scaleout.sh ${service_name}_node_exporter 60) & + (cd ../ && chmod +x ./scaleout.sh && ./scaleout.sh ${service_name}_graphana 60) & + + wait + """ + } + } } + + stage('smoke tests') { + steps { + dir(WORKDIR) { + sleep 10 + sh "curl -If https://metrics.xai-corp.net/" + } + } + post { + failure { + dir(WORKDIR) { + sh """ + export DOCKER_HOST=${DOCKER_HOST} + docker service rollback ${service_name}_graphana + """ + } + } + } + } + } }