197 lines
10 KiB
Plaintext
197 lines
10 KiB
Plaintext
pipeline {
|
|
agent any
|
|
parameters {
|
|
booleanParam(name: 'DRY_RUN', defaultValue: 'true', description: 'Stay on DEV branches')
|
|
booleanParam(name: 'SKIP_TESTS', defaultValue: 'false', description: 'Skip tests')
|
|
string(name: 'NEW_VERSION', defaultValue: '', description: 'New version, eg: 2020.0.0')
|
|
string(name: 'NEXT_VERSION', defaultValue: '2020.1.0', description: 'Next version')
|
|
string(name: 'NEW_VERSION_MESSAGE', defaultValue: 'Nouvelle version', description: 'New version message')
|
|
string(name: 'GIT_CREDENTIAL_ID', defaultValue: 'jenkins-jenkins-ssh-key', description: '')
|
|
}
|
|
options {
|
|
disableConcurrentBuilds()
|
|
buildDiscarder(logRotator(numToKeepStr: '10'))
|
|
}
|
|
stages {
|
|
stage('Prepare release') {
|
|
steps {
|
|
buildName "#${BUILD_NUMBER} ${params.NEW_VERSION}"
|
|
|
|
script {
|
|
env.LIFEISLIFE_RELEASE_BRANCH = (params.DRY_RUN ? 'dev' : 'master')
|
|
env.LIFEISLIFE_DEV_BRANCH = (params.DRY_RUN ? 'dev' : 'dev')
|
|
env.JOB_BUILD_WILDFLY = (params.DRY_RUN ? 'lifeislife/lifeislife-back/dev' : 'lifeislife/lifeislife-back/master')
|
|
env.JOB_TEST_WILDFLY = (params.DRY_RUN ? 'lifeislife/lifeislife-it/dev' : 'lifeislife/lifeislife-it/master')
|
|
env.CLUSTER_STACK = (params.DRY_RUN ? 'lifeislifedev' : 'lifeislifeprod')
|
|
|
|
env.JOB_BUILD_FRONTENDS = (params.DRY_RUN ? 'lifeislife/lifeislife-front/dev' : 'lifeislife/lifeislife-front/master')
|
|
env.SKIP_TESTS = params.SKIP_TEST
|
|
}
|
|
|
|
checkout poll: false, scm: [$class: 'GitSCM', branches: [[name: "*/${LIFEISLIFE_DEV_BRANCH}"],[name: "*/${LIFEISLIFE_RELEASE_BRANCH}"]],
|
|
doGenerateSubmoduleConfigurations: false,
|
|
extensions: [[$class: 'RelativeTargetDirectory', relativeTargetDir: 'lifeislife-back']],
|
|
userRemoteConfigs: [[credentialsId: 'jenkins-jenkins-ssh-key', url: 'ssh://git@gitlab.valuya.be:1022/lifeislife/lifeislife-back.git']]]
|
|
|
|
dir ('lifeislife-back') {
|
|
sh "echo 'back: merges: ' >>../release.log"
|
|
sh "git log origin/${LIFEISLIFE_RELEASE_BRANCH}..origin/${LIFEISLIFE_DEV_BRANCH} --pretty=format:'[%cd %ce %h] %s' --min-parents=2 --date=short >>../release.log"
|
|
sh "echo 'back: commits: ' >>../release.log"
|
|
sh "git log origin/${LIFEISLIFE_RELEASE_BRANCH}..origin/${LIFEISLIFE_DEV_BRANCH} --pretty=format:'[%cd %ce %h] %s' --max-parents=1 --date=short >>../release.log"
|
|
sh "echo '' >> ./release.log"
|
|
}
|
|
|
|
checkout poll: false, scm: [$class: 'GitSCM', branches: [[name: "*/${LIFEISLIFE_DEV_BRANCH}"],[name: "*/${LIFEISLIFE_RELEASE_BRANCH}"]],
|
|
doGenerateSubmoduleConfigurations: false,
|
|
extensions: [[$class: 'RelativeTargetDirectory', relativeTargetDir: 'lifeislife-front']],
|
|
userRemoteConfigs: [[credentialsId: 'jenkins-jenkins-ssh-key', url: 'ssh://git@gitlab.valuya.be:1022/lifeislife/lifeislife-front.git']]]
|
|
dir ('lifeislife-front') {
|
|
sh "echo 'Front: merges: ' >>../release.log"
|
|
sh "git log origin/${LIFEISLIFE_RELEASE_BRANCH}..origin/${LIFEISLIFE_DEV_BRANCH} --pretty=format:'[%cd %ce %h] %s' --min-parents=2 --date=short >>../release.log"
|
|
sh "echo 'Front: commits: ' >>../release.log"
|
|
sh "git log origin/${LIFEISLIFE_RELEASE_BRANCH}..origin/${LIFEISLIFE_DEV_BRANCH} --pretty=format:'[%cd %ce %h] %s' --max-parents=1 --date=short >>../release.log"
|
|
sh "echo '' >> ./release.log"
|
|
}
|
|
|
|
stash includes: 'release.log', name: 'release-log'
|
|
}
|
|
}
|
|
|
|
stage('Release Lifeislife') {
|
|
steps {
|
|
build job: "lifeislife/release-lifeislife-back", parameters: [
|
|
string(name: 'NEW_VERSION', value: "${params.NEW_VERSION}"),
|
|
string(name: 'RELEASE_BRANCH', value: "${env.LIFEISLIFE_RELEASE_BRANCH}"),
|
|
string(name: 'GIT_REPO_BRANCH', value: "${env.LIFEISLIFE_DEV_BRANCH}"),
|
|
]
|
|
}
|
|
}
|
|
|
|
stage('Test Lifeislife') {
|
|
when {
|
|
expression { return params.SKIP_TESTS != true }
|
|
}
|
|
steps {
|
|
build job: "${env.JOB_TEST_WILDFLY}", parameters: [
|
|
booleanParam(name: 'SKIP_TESTS', value: false),
|
|
]
|
|
}
|
|
}
|
|
|
|
stage('Build Lifeislife') {
|
|
steps {
|
|
build job: "${env.JOB_BUILD_WILDFLY}", parameters: [
|
|
booleanParam(name: 'SKIP_TESTS', value: true),
|
|
booleanParam(name: 'FORCE_DEPLOY', value: true),
|
|
]
|
|
}
|
|
}
|
|
|
|
|
|
|
|
stage('Update front api') {
|
|
steps {
|
|
build job: "lifeislife/update-api-lifeislife-front/${env.LIFEISLIFE_DEV_BRANCH}", parameters: [
|
|
string(name: 'API_VERSION', value: "${params.NEW_VERSION}"),
|
|
booleanParam(name: 'SKIP_BUILD_LIBS', value: true),
|
|
]
|
|
}
|
|
}
|
|
|
|
stage('Release lifeislife front') {
|
|
steps {
|
|
build job: "lifeislife/release-lifeislife-front/${env.LIFEISLIFE_DEV_BRANCH}", parameters: [
|
|
string(name: 'NEW_VERSION', value: "${params.NEW_VERSION}"),
|
|
string(name: 'RELEASE_BRANCH', value: "${env.LIFEISLIFE_RELEASE_BRANCH}"),
|
|
string(name: 'DEV_BRANCH', value: "${env.LIFEISLIFE_DEV_BRANCH}"),
|
|
booleanParam(name: 'SKIP_BUILD', value: true),
|
|
booleanParam(name: 'SKIP_NEXT_VERSION', value: true),
|
|
]
|
|
}
|
|
}
|
|
stage('Build lifeislife-front') {
|
|
steps {
|
|
build job: "${env.JOB_BUILD_FRONTENDS}", parameters: [
|
|
]
|
|
}
|
|
}
|
|
|
|
stage('Update cluster state') {
|
|
steps {
|
|
build job: 'infra/cluster-conf-update', parameters: [
|
|
string(name:"STACK", value:"${env.CLUSTER_STACK}"),
|
|
string(name:"VALUES_FILE", value:"values.wildfly.yaml"),
|
|
string(name:"VALUES_KEY", value:".wildfly.deployment.imageTag"),
|
|
string(name:"VALUES_VALUE", value:"\"${params.NEW_VERSION}\"")
|
|
]
|
|
build job: 'infra/cluster-conf-update', parameters: [
|
|
string(name:"STACK", value:"${env.CLUSTER_STACK}"),
|
|
string(name:"VALUES_FILE", value:"values.front-admin.yaml"),
|
|
string(name:"VALUES_KEY", value:".adminFront.deployment.imageTag"),
|
|
string(name:"VALUES_VALUE", value:"\"${params.NEW_VERSION}\"")
|
|
]
|
|
build job: 'infra/cluster-conf-update', parameters: [
|
|
string(name:"STACK", value:"${env.CLUSTER_STACK}"),
|
|
string(name:"VALUES_FILE", value:"values.front-customer.yaml"),
|
|
string(name:"VALUES_KEY", value:".customerFront.deployment.imageTag"),
|
|
string(name:"VALUES_VALUE", value:"\"${params.NEW_VERSION}\"")
|
|
]
|
|
build job: 'infra/cluster-conf-update', parameters: [
|
|
string(name:"STACK", value:"${env.CLUSTER_STACK}"),
|
|
string(name:"VALUES_FILE", value:"values.front-mypension.yaml"),
|
|
string(name:"VALUES_KEY", value:".mypensionFront.deployment.imageTag"),
|
|
string(name:"VALUES_VALUE", value:"\"${params.NEW_VERSION}\""),
|
|
]
|
|
build job: 'infra/cluster-conf-update', parameters: [
|
|
string(name:"STACK", value:"${env.CLUSTER_STACK}"),
|
|
string(name:"VALUES_FILE", value:"values.front-simu.yaml"),
|
|
string(name:"VALUES_KEY", value:".simuFront.deployment.imageTag"),
|
|
string(name:"VALUES_VALUE", value:"\"${params.NEW_VERSION}\""),
|
|
]
|
|
}
|
|
}
|
|
|
|
|
|
stage('Release next version') {
|
|
steps {
|
|
build job: "lifeislife/release-lifeislife-back", parameters: [
|
|
string(name: 'NEW_VERSION', value: "${params.NEXT_VERSION}-SNAPSHOT"),
|
|
string(name: 'RELEASE_BRANCH', value: "${env.LIFEISLIFE_DEV_BRANCH}"),
|
|
string(name: 'GIT_REPO_BRANCH', value: "${env.LIFEISLIFE_RELEASE_BRANCH}"),
|
|
booleanParam(name: 'SKIP_PUSH_TAG', value: true),
|
|
]
|
|
|
|
build job: "lifeislife/release-lifeislife-front/${env.LIFEISLIFE_RELEASE_BRANCH}", parameters: [
|
|
string(name: 'NEW_VERSION', value: "${params.NEXT_VERSION}-rc.0"),
|
|
string(name: 'RELEASE_BRANCH', value: "${env.LIFEISLIFE_DEV_BRANCH}"),
|
|
string(name: 'DEV_BRANCH', value: "${env.LIFEISLIFE_RELEASE_BRANCH}"),
|
|
booleanParam(name: 'SKIP_BUILD', value: true),
|
|
booleanParam(name: 'SKIP_NEXT_VERSION', value: true),
|
|
booleanParam(name: 'SKIP_PUSH_TAG', value: true),
|
|
]
|
|
}
|
|
}
|
|
}
|
|
post {
|
|
failure {
|
|
mail(
|
|
to: 'charlyghislain@gmail.com', cc: 'yannick@valuya.be',
|
|
subject: "lifeislife RELEASE ${BUILD_NUMBER} failed",
|
|
body: "See job at ${BUILD_URL}"
|
|
)
|
|
}
|
|
success {
|
|
unstash 'release-log'
|
|
script {
|
|
env.RELEASE_LOG = readFile(file: './release.log')
|
|
env.MAIL_BODY = "Changes: \n" + "${RELEASE_LOG}"
|
|
}
|
|
|
|
mail(
|
|
to: 'charlyghislain@gmail.com', cc: 'yannick@valuya.be',
|
|
subject: "lifeislife ${params.NEW_VERSION} released",
|
|
body: "${env.MAIL_BODY}"
|
|
)
|
|
}
|
|
}
|
|
} |