pipeline { agent { kubernetes { yamlFile '.jenkins/podTemplate.yaml' } } environment { ACR_NAME = 'marcin00' CLIENT_ID = 'c302726f-fafb-4143-94c1-67a70975574a' DOCKER_REGISTRY_URL = 'marcin00.azurecr.io' DOCKER_IMAGE = "${DOCKER_REGISTRY_URL}/user-microservice:${GIT_COMMIT}" DEPLOY_REPO = 'https://gitea.marcin00.pl/pikram/user-microservice-deploy.git' } stages { stage('Code Tests') { steps { container('python') { dir('api') { sh ''' python3 -m venv env source env/bin/activate pip install -r requirements.txt pytest python3 -m pytest --junit-xml=pytest_junit.xml ''' } } } post { always { junit testResults: '**/*pytest_junit.xml' } } } stage('Build & Push Docker') { steps { container('docker') { sh ''' docker build -t ${DOCKER_IMAGE} . az login --identity --client-id ${CLIENT_ID} az acr login --name ${ACR_NAME} docker push ${DOCKER_IMAGE} ''' } } } stage('Commit new version to GitOps repo') { steps { container('git') { sh ''' git config --global user.name "jenkins[bot]" git config --global user.email "jenkins@marcin00.pl" ''' sh 'git clone ${DEPLOY_REPO} --branch jenkins-kubernetes' dir('user-microservice-deploy') { sh ''' # Podmień tag obrazu w pliku deploy.yaml awk -v commit="ssh-creds-id$GIT_COMMIT" ' $0 ~ /name:[[:space:]]*api/ { in_api_container = 1; print; next } in_api_container && $0 ~ /^[[:space:]]*image:[[:space:]]*/ { sub(/:[^:[:space:]]+$/, ":" commit) in_api_container = 0 print next } { print } ' deploy.yaml > deploy.tmp && mv deploy.tmp deploy.yaml ''' sh 'git commit -am "JENKINS: Changed deployed version to $GIT_COMMIT"' sshagent(['gitea-deploy-key']) { sh ''' git remote set-url origin ssh://git@srv22.mikr.us:20343/pikram/user-microservice-deploy.git git push ''' } } } } } } }