convert prometheus jenkinsfile to declarative pipeline

This commit is contained in:
2020-04-19 09:27:03 -04:00
parent a1e799bff9
commit 94d7b04002

View File

@@ -1,42 +1,85 @@
node('docker') { pipeline {
def service_name = 'metrics' environment {
def app_name = 'prometheus' service_name = 'metrics'
def workdir = 'dockerfiles/services/prometheus' build_file = 'docker-compose.yml'
def build_file = 'docker-compose.yml' deployment_file = 'docker-compose-prod.yml'
def deployment_file = 'docker-compose-prod.yml' DOCKERFILE = 'Dockerfile'
APP_NAME = 'prometheus'
APP_PORT = '80'
WORKDIR = 'dockerfiles/services/prometheus'
DOCKER_HOST = 'dkhost:2376'
}
agent { label 'docker' }
options {
buildDiscarder(logRotator(numToKeepStr: '6'))
}
triggers {
cron('@monthly')
}
stages {
stage('prepare') { stage('prepare') {
git credentialsId: 'f1f58215-c789-44a2-9b72-50e4425cb061', url: 'ssh://git@git.xai-corp.net:10022/xai-corp.net/provisioning.git' 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 'ls'
} }
}
stage('build') { stage('build') {
dir(workdir) { steps {
docker.withRegistry('http://dkregistry.xai-corp.net:5000') { 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 .") def customImage = docker.build("dkregistry.xai-corp.net:5000/xaicorp/${app_name}:latest", "-f Dockerfile .")
customImage.push() customImage.push()
} }
withDockerRegistry(credentialsId: 'b11d7f1a-81ac-4daf-8842-56afc0d2370e', url: 'http://dkregistry.xai-corp.net:5000') {
sh "docker-compose -f ${deployment_file} pull" sh "docker-compose -f ${deployment_file} pull"
} }
} }
}
}
}
stage('deploy') { stage('deploy') {
dir(workdir) { steps {
dir(WORKDIR) {
sh """ sh """
docker stack deploy -c ${deployment_file} ${service_name} export DOCKER_HOST=${DOCKER_HOST}
docker service update -q ${service_name}_prometheus docker stack deploy --with-registry-auth -c ${deployment_file} ${service_name}
docker service update -q ${service_name}_statsd_exporter (cd ../ && chmod +x ./scaleout.sh && ./scaleout.sh ${service_name}_prometheus 60) &
docker service update -q ${service_name}_fluentd_exporter (cd ../ && chmod +x ./scaleout.sh && ./scaleout.sh ${service_name}_statsd_exporter 60) &
docker service update -q ${service_name}_node_exporter (cd ../ && chmod +x ./scaleout.sh && ./scaleout.sh ${service_name}_fluentd_exporter 60) &
docker service update -q ${service_name}_graphana (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') { stage('smoke tests') {
dir(workdir) { steps {
sleep 60 dir(WORKDIR) {
sh "curl -If https://metrics.xai-corp.net" 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
"""
} }
} }
} }
}
}
}