Skip to content
Snippets Groups Projects
Commit 31a952ac authored by OZGCloud's avatar OZGCloud
Browse files

ozg-2502 append git hash after master docker tag

parent 9788dd9a
No related branches found
No related tags found
No related merge requests found
...@@ -105,50 +105,27 @@ pipeline { ...@@ -105,50 +105,27 @@ pipeline {
} }
} }
stage('Push Docker image') { stage('Tag and Push Docker image') {
steps { steps {
script { script {
FAILED_STAGE=env.STAGE_NAME FAILED_STAGE=env.STAGE_NAME
def pom = readMavenPom file: 'pom.xml' IMAGE_TAG = generateImageTag()
def version = pom.version
container("docker") { tagAndPushDockerImage('intelliform-adapter', IMAGE_TAG)
withCredentials([usernamePassword(credentialsId: 'jenkins-docker-login', usernameVariable: 'USER', passwordVariable: 'PASSWORD')]) { tagAndPushDockerImage('formsolutions-adapter', IMAGE_TAG)
sh 'docker login docker.ozg-sh.de -u ${USER} -p ${PASSWORD}'
//intelliform adapter
sh "docker tag docker.ozg-sh.de/intelliform-adapter:build-latest docker.ozg-sh.de/intelliform-adapter:${env.BRANCH_NAME}-${version}"
sh "docker push docker.ozg-sh.de/intelliform-adapter:${env.BRANCH_NAME}-${version}"
if (env.BRANCH_NAME == 'master') { if (env.BRANCH_NAME == 'master') {
sh 'docker tag docker.ozg-sh.de/intelliform-adapter:build-latest docker.ozg-sh.de/intelliform-adapter:snapshot-latest' tagAndPushDockerImage('intelliform-adapter', 'snapshot-latest')
sh 'docker push docker.ozg-sh.de/intelliform-adapter:snapshot-latest' tagAndPushDockerImage('formsolutions-adapter', 'snapshot-latest')
}
if (env.BRANCH_NAME == 'release') {
sh 'docker tag docker.ozg-sh.de/intelliform-adapter:build-latest docker.ozg-sh.de/intelliform-adapter:latest'
sh 'docker push docker.ozg-sh.de/intelliform-adapter:latest'
}
//formsolutions adapter
sh "docker tag docker.ozg-sh.de/formsolutions-adapter:build-latest docker.ozg-sh.de/formsolutions-adapter:${env.BRANCH_NAME}-${version}"
sh "docker push docker.ozg-sh.de/formsolutions-adapter:${env.BRANCH_NAME}-${version}"
if (env.BRANCH_NAME == 'master') {
sh 'docker tag docker.ozg-sh.de/formsolutions-adapter:build-latest docker.ozg-sh.de/formsolutions-adapter:snapshot-latest'
sh 'docker push docker.ozg-sh.de/formsolutions-adapter:snapshot-latest'
}
if (env.BRANCH_NAME == 'release') {
sh 'docker tag docker.ozg-sh.de/formsolutions-adapter:build-latest docker.ozg-sh.de/formsolutions-adapter:latest'
sh 'docker push docker.ozg-sh.de/formsolutions-adapter:latest'
}
} }
else if (env.BRANCH_NAME == 'release') {
tagAndPushDockerImage('intelliform-adapter', 'latest')
tagAndPushDockerImage('formsolutions-adapter', 'latest')
} }
} }
} }
} }
stage('Rollout Dev Intelliform-Adapter') { stage('Trigger Dev rollout') {
when { when {
branch 'master' branch 'master'
} }
...@@ -156,36 +133,29 @@ pipeline { ...@@ -156,36 +133,29 @@ pipeline {
script { script {
FAILED_STAGE = env.STAGE_NAME FAILED_STAGE = env.STAGE_NAME
rolloutDev() checkoutProvisioningRepo()
setNewProvisioningVersion('dev')
pushNewProvisioningVersion('dev')
} }
} }
} }
stage('Trigger Test | Stage rollout') { stage('Trigger Test | Stage rollout') {
when { when {
// todo rename to release branch 'release'
branch 'ozg-2502'
} }
steps { steps {
script { script {
FAILED_STAGE = env.STAGE_NAME FAILED_STAGE = env.STAGE_NAME
def pom = readMavenPom file: 'pom.xml' checkoutProvisioningRepo()
def version = pom.version
withCredentials([usernamePassword(credentialsId: 'jenkins-gitea-access-token', passwordVariable: 'TOKEN', usernameVariable: 'USER')]) {
sh 'git clone https://${USER}:${TOKEN}@git.ozg-sh.de/mgm/provisioning.git'
// todo remove
dir('provisioning') {
sh 'git checkout ozg-2502'
}
setNewProvisioningVersion('test', version) setNewProvisioningVersion('test')
setNewProvisioningVersion('stage', version) setNewProvisioningVersion('stage')
pushNewProvisioningVersion(USER, TOKEN, version) pushNewProvisioningVersion('test stage')
}
} }
} }
} }
...@@ -224,54 +194,64 @@ String getElementAccessToken() { ...@@ -224,54 +194,64 @@ String getElementAccessToken() {
} }
} }
Void restartDeployment(namespace, deployment) { Void setNewProvisioningVersion(String environment) {
sh "kubectl rollout restart deployment/${deployment} -n ${namespace}" dir("provisioning") {
sh "kubectl rollout status deployment/${deployment} -n ${namespace}" def envFile = "playbook/inventory/versions/${environment}.yml"
} def envVersions = readYaml file: envFile
envVersions.versions.afm_adapter.image.tag = IMAGE_TAG
envVersions.versions.fs_adapter.image.tag = IMAGE_TAG
String getDeployments(namespace) { writeYaml file: envFile, data: envVersions, overwrite: true
return sh (script: "kubectl get deployment -n \$NAMESPACE", returnStdout: true) }
} }
Void rolloutDev() { Void pushNewProvisioningVersion(String environment) {
def namespaces = sh(script: '''kubectl get namespaces -l 'ozg-environment=dev,update-namespace notin (false)' -o custom-columns=NAME:.metadata.name --no-headers''', returnStdout: true) withCredentials([usernamePassword(credentialsId: 'jenkins-gitea-access-token', passwordVariable: 'TOKEN', usernameVariable: 'USER')]) {
printl "namespaces: ${namespaces}" dir('provisioning') {
sh 'git add playbook/inventory/versions/.'
sh 'git config user.email "jenkins@ozg.de"'
sh 'git config user.name "jenkins"'
sh "git commit -m 'jenkins rollout ${environment} afm-adapter fs-adapter version ${IMAGE_TAG}'"
sh 'git push https://${USER}:${TOKEN}@git.ozg-sh.de/mgm/provisioning.git'
}
}
}
namespaces.each { namespace -> Void checkoutProvisioningRepo() {
deployments = getDeployments(namespace) withCredentials([usernamePassword(credentialsId: 'jenkins-gitea-access-token', passwordVariable: 'TOKEN', usernameVariable: 'USER')]) {
sh 'git clone https://${USER}:${TOKEN}@git.ozg-sh.de/mgm/provisioning.git'
if (deployments.contains("fs-adapter")) { // todo remove git checkout
restartDeployment(namespace, "fs-adapter") dir('provisioning') {
sh 'git checkout ozg-2502'
}
} }
if (deployments.contains("afm-adapter")) {
restartDeployment(namespace, "afm-adapter")
} }
if (deployments.contains("if-adapter")) { Void tagAndPushDockerImage(String imageName, String newTag){
restartDeployment(namespace, "if-adapter") container("docker") {
withCredentials([usernamePassword(credentialsId: 'jenkins-docker-login', usernameVariable: 'USER', passwordVariable: 'PASSWORD')]) {
sh 'docker login docker.ozg-sh.de -u ${USER} -p ${PASSWORD}'
sh "docker tag docker.ozg-sh.de/${imageName}:build-latest docker.ozg-sh.de/${imageName}:${newTag}"
sh "docker push docker.ozg-sh.de/${imageName}:${newTag}"
} }
} }
} }
Void setNewProvisioningVersion(String environment, String version) { String getPomVersion(String pomFile){
dir("provisioning") { def pom = readMavenPom file: pomFile
def envFile = "playbook/inventory/versions/${environment}.yml"
def envVersions = readYaml file: envFile
envVersions.versions.afm_adapter.image.tag = version
envVersions.versions.fs_adapter.image.tag = version
writeYaml file: envFile, data: envVersions, overwrite: true return pom.version
}
} }
Void pushNewProvisioningVersion(String user, String token, String version) { String generateImageTag() {
dir('provisioning') { def imageTag = "${env.BRANCH_NAME}-${getPomVersion('pom.xml')}"
sh 'git add playbook/inventory/versions/.'
sh 'git config user.email "jenkins@ozg.de"' if (env.BRANCH_NAME == 'master') {
sh 'git config user.name "jenkins"' imageTag += "-${env.GIT_COMMIT.take(7)}"
sh "git commit -m 'jenkins rollout afm-adapter fs-adapter test stage version ${version}'"
sh 'git push https://${USER}:${TOKEN}@git.ozg-sh.de/mgm/provisioning.git'
} }
return imageTag
} }
\ No newline at end of file
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment