Skip to content
Snippets Groups Projects
Commit 038282de authored by OZGCloud's avatar OZGCloud
Browse files

ozg-2502 append git hash after master docker tag

parent f6433f5d
No related branches found
No related tags found
No related merge requests found
...@@ -87,11 +87,6 @@ pipeline { ...@@ -87,11 +87,6 @@ pipeline {
script { script {
FAILED_STAGE=env.STAGE_NAME FAILED_STAGE=env.STAGE_NAME
def pom = readMavenPom file: 'pom.xml'
def version = pom.version
BRANCH_AND_VERSION = "${env.BRANCH_NAME}-${version}"
container("quarkus-22"){ container("quarkus-22"){
withCredentials([usernamePassword(credentialsId: 'jenkins-docker-login', usernameVariable: 'USER', passwordVariable: 'PASSWORD')]) { withCredentials([usernamePassword(credentialsId: 'jenkins-docker-login', usernameVariable: 'USER', passwordVariable: 'PASSWORD')]) {
configFileProvider([configFile(fileId: 'maven-settings', variable: 'MAVEN_SETTINGS')]) { configFileProvider([configFile(fileId: 'maven-settings', variable: 'MAVEN_SETTINGS')]) {
...@@ -128,34 +123,19 @@ pipeline { ...@@ -128,34 +123,19 @@ 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
BRANCH_AND_VERSION = "${env.BRANCH_NAME}-${version}"
container("quarkus-22") {
withCredentials([usernamePassword(credentialsId: 'jenkins-docker-login', usernameVariable: 'USER', passwordVariable: 'PASSWORD')]) {
sh 'podman login docker.ozg-sh.de -u ${USER} -p ${PASSWORD}'
sh 'podman pull docker.ozg-sh.de/root/user-manager:build-latest'
echo "Version: ${BRANCH_AND_VERSION}"; tagAndPushDockerImage(IMAGE_TAG)
sh "podman tag docker.ozg-sh.de/root/user-manager:build-latest docker.ozg-sh.de/user-manager:${BRANCH_AND_VERSION}"
sh "podman push docker.ozg-sh.de/user-manager:${BRANCH_AND_VERSION}"
if (env.BRANCH_NAME == 'master') { if (env.BRANCH_NAME == 'master') {
sh 'podman tag docker.ozg-sh.de/root/user-manager:build-latest docker.ozg-sh.de/user-manager:snapshot-latest' tagAndPushDockerImage('snapshot-latest')
sh 'podman push docker.ozg-sh.de/user-manager:snapshot-latest'
}
if (env.BRANCH_NAME == 'release') {
sh 'podman tag docker.ozg-sh.de/root/user-manager:build-latest docker.ozg-sh.de/user-manager:latest'
sh 'podman push docker.ozg-sh.de/user-manager:latest'
}
} }
else if (env.BRANCH_NAME == 'release') {
tagAndPushDockerImage('latest')
} }
} }
} }
...@@ -168,53 +148,31 @@ pipeline { ...@@ -168,53 +148,31 @@ pipeline {
steps { steps {
script { script {
FAILED_STAGE = env.STAGE_NAME FAILED_STAGE = env.STAGE_NAME
initK8s()
container("k8s"){ checkoutProvisioningRepo()
sh """
error=0 setNewProvisioningVersion('dev')
for NAMESPACE in \$(kubectl get namespaces -l 'ozg-environment=dev,update-namespace notin (false)' -o custom-columns=NAME:.metadata.name --no-headers); \
do \ pushNewProvisioningVersion('dev')
if kubectl get deployment -n \$NAMESPACE | grep user-manager; then \
kubectl rollout restart deployment/user-manager -n \$NAMESPACE; \
if ! kubectl rollout status deployment/user-manager -n \$NAMESPACE; then \
error=1; \
fi; \
fi; \
done
exit \$error
"""
}
} }
} }
} }
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')
}
} }
} }
} }
...@@ -254,32 +212,64 @@ String getElementAccessToken() { ...@@ -254,32 +212,64 @@ String getElementAccessToken() {
} }
} }
Void setNewProvisioningVersion(String environment, String version) { Void setNewProvisioningVersion(String environment) {
dir("provisioning") { dir("provisioning") {
def envFile = "playbook/inventory/versions/${environment}.yml" def envFile = "playbook/inventory/versions/${environment}.yml"
def envVersions = readYaml file: envFile def envVersions = readYaml file: envFile
envVersions.versions.user_manager.image.tag = version envVersions.versions.user_manager.image.tag = IMAGE_TAG
writeYaml file: envFile, data: envVersions, overwrite: true writeYaml file: envFile, data: envVersions, overwrite: true
} }
} }
Void pushNewProvisioningVersion(String user, String token, String version) { Void checkoutProvisioningRepo() {
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 git checkout
dir('provisioning') {
sh 'git checkout ozg-2502'
}
}
}
Void pushNewProvisioningVersion(String environment) {
withCredentials([usernamePassword(credentialsId: 'jenkins-gitea-access-token', passwordVariable: 'TOKEN', usernameVariable: 'USER')]) {
dir('provisioning') { dir('provisioning') {
sh 'git add playbook/inventory/versions/.' sh 'git add playbook/inventory/versions/.'
sh 'git config user.email "jenkins@ozg.de"' sh 'git config user.email "jenkins@ozg.de"'
sh 'git config user.name "jenkins"' sh 'git config user.name "jenkins"'
sh "git commit -m 'jenkins rollout user-manager test stage version ${version}'" sh "git commit -m 'jenkins rollout ${environment} user-manager version ${IMAGE_TAG}'"
sh 'git push https://${USER}:${TOKEN}@git.ozg-sh.de/mgm/provisioning.git' sh 'git push https://${USER}:${TOKEN}@git.ozg-sh.de/mgm/provisioning.git'
} }
} }
}
String getPomVersion(String pomFile){
def pom = readMavenPom file: pomFile
return pom.version
}
String generateImageTag() {
def imageTag = "${env.BRANCH_NAME}-${getPomVersion('pom.xml')}"
if (env.BRANCH_NAME == 'master') {
imageTag += "-${env.GIT_COMMIT.take(7)}"
}
return imageTag
}
Void tagAndPushDockerImage(String newTag) {
container("quarkus-22") {
withCredentials([usernamePassword(credentialsId: 'jenkins-docker-login', usernameVariable: 'USER', passwordVariable: 'PASSWORD')]) {
sh 'podman login docker.ozg-sh.de -u ${USER} -p ${PASSWORD}'
sh "podman pull docker.ozg-sh.de/root/user-manager:build-latest"
Void initK8s(){ sh "podman tag docker.ozg-sh.de/root/user-manager:build-latest docker.ozg-sh.de/user-manager:${newTag}"
container("k8s") { sh "podman push docker.ozg-sh.de/user-manager:${newTag}"
configFileProvider([configFile(fileId: 'jenkins-kuby-kubeconfig', variable: 'KUBE_CONFIG')]) {
sh 'mkdir ~/.kube'
sh 'cp ${KUBE_CONFIG} ~/.kube/config'
} }
} }
} }
\ 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