From 3df67f9c199579c7d464d097a1324fb8ca87e6ce Mon Sep 17 00:00:00 2001 From: cghislai Date: Sun, 14 Feb 2021 21:27:36 +0100 Subject: [PATCH] Jenkins file fix --- Jenkinsfile | 56 ++++++++++++++++++------- jenkins/dsl/charlyghislaindotcom.groovy | 2 +- 2 files changed, 42 insertions(+), 16 deletions(-) diff --git a/Jenkinsfile b/Jenkinsfile index a43de2f..0295c80 100644 --- a/Jenkinsfile +++ b/Jenkinsfile @@ -6,9 +6,19 @@ pipeline { } parameters { booleanParam(name: 'SKIP_TESTS', defaultValue: true, description: 'Skip tests') + booleanParam(name: 'SKIP_PUBLISH', defaultValue: false, description: 'Skip docker image build&push') + booleanParam(name: 'SKIP_CLUSTER_UPDATE', defaultValue: false, description: 'Skip cluster state repo commit') string( - name: 'IMAGE_TAG', defaultValue: 'docker.charlyghislain.com/charlyghislaindotcom', - description: 'Image tag to push' + name: 'IMAGE', defaultValue: 'charlyghislaindotcom', + description: 'Image to push (suffixed -fr or -en)' + ) + string( + name: 'REPO', defaultValue: 'docker.charlyghislain.com', + description: 'Repo to push' + ) + credentials( + name: 'REPO_USERNAMEPASS_CREDENTIAL', defaultValue: 'jenkins-jenkins-nexus-credentials', + description: 'Cred for repo', credentialType: "Username with password" ) } stages { @@ -34,27 +44,43 @@ pipeline { } } stage ('Publish') { + when { + expression { return params.SKIP_PUBLISH != true } + } agent { label 'docker' } steps { container('docker') { unstash(name: 'dist') - sh ''' - export COMMIT="$(git rev-parse --short HEAD)" - docker build --build-arg CLANG=fr -t "${IMAGE_TAG}-fr:${COMMIT}" . - docker push "${IMAGE_TAG}-fr:${COMMIT}" . - docker build --build-arg CLANG=en -t "${IMAGE_TAG}-en:${COMMIT}" . - docker push "${IMAGE_TAG}-en:${COMMIT}" . - ''' - build job: 'infra/cluster-conf-update', parameters: [ - string(name:"STACK", value:"charlyghislaindotcom"), - string(name:"VALUES_FILE", value:"values.yaml"), - string(name:"VALUES_KEY", value:".deployment.imageTag"), - string(name:"VALUES_VALUE", value:"\"${env.COMMIT}\""), - ] + script { + VERSION = sh(script: 'head -n1 dist/.version', returnStdout: true).trim() + def fr = docker.build("${params.REPO}/${params.IMAGE}-fr:${VERSION}", "--build-arg CLANG=fr .") + def en = docker.build("${params.REPO}/${params.IMAGE}-en:${VERSION}", "--build-arg CLANG=en .") + + fr.push() + fr.push('latest') + en.push() + en.push('latest') + } } } } + stage ('Update cluster') { + when { + allOf { + expression { return params.SKIP_PUBLISH != true } + expression { return params.SKIP_CLUSTER_UPDATE != true } + } + } + steps { + build job: 'infra/cluster-conf-update', parameters: [ + string(name:"STACK", value:"charlyghislaindotcom"), + string(name:"VALUES_FILE", value:"values.yaml"), + string(name:"VALUES_KEY", value:".deployment.imageTag"), + string(name:"VALUES_VALUE", value:"\"${VERSION}\""), + ] + } + } } } diff --git a/jenkins/dsl/charlyghislaindotcom.groovy b/jenkins/dsl/charlyghislaindotcom.groovy index e09318a..01596ef 100644 --- a/jenkins/dsl/charlyghislaindotcom.groovy +++ b/jenkins/dsl/charlyghislaindotcom.groovy @@ -3,7 +3,7 @@ multibranchPipelineJob('charlyghislaindotcom/charlyghislaindotcom') { branchSource { source { git { - id('lifeislife_lifeislife-front_repo') // IMPORTANT: use a constant and unique identifier + id('charlyghislaindotcom-front_repo') // IMPORTANT: use a constant and unique identifier remote('ssh://git@gitea.charlyghislain.com:2022/cghislai/charlyghislaindotcom.git') credentialsId('jenkins-jenkins-ssh-key') traits {