pipeline { agent any options { skipDefaultCheckout(true) } environment { IMAGE_NAME = 'rd.jenkins' AWS_URL = credentials('aws-ecr-url') AWS_USER = credentials('aws-ecr-username') AWS_REGION = credentials('aws-ecr-region') AWS_CREDS_ID = 'aws-jenkins' } stages { stage('Checkout') { steps { cleanWs() script { checkout scm sh 'git submodule update --init --recursive' def branch = sh( script: "git branch --show-current", returnStdout: true ).trim() if(branch != 'main') { echo "[!] Not on 'main' branch. Current branch: ${branch}" currentBuild.result = 'SUCCESS' error("Stopping pipeline: not on main branch.") } def tagName = sh( script: "git describe --tags --exact-match 2>/dev/null || echo 'no-tag'", returnStdout: true ).trim() echo "Detected tag: ${tagName}" if (!(tagName ==~ /^v[0-9]+(\.[0-9]+){0,2}$/)) { echo "[!] Invalid tag format. Expected format: vX.Y.Z" currentBuild.result = 'SUCCESS' error("Stopping pipeline: invalid tag format.") } env.IMAGE_TAG = tagName env.AWS_IMAGE = "${AWS_URL}/${AWS_USER}/${IMAGE_NAME}:${IMAGE_TAG}" } } } // stage('Build Image') { // steps { // sh "echo ${AWS_IMAGE}" // script { // docker.build("${AWS_IMAGE}", '-f src/worker/Dockerfile ./src/worker/ --no-cache') // // docker.build("${AWS_IMAGE}", '--no-cache --pull -f src/Service/Infrastructure/App/Dockerfile .') // } // } // } stage('AWS ECR Login') { steps { withAWS(credentials: AWS_CREDS_ID, region: AWS_REGION) { script { sh """ set -euo pipefail echo "Logging in to AWS ECR: \${AWS_URL}" aws ecr get-login-password --region "\${AWS_REGION}" \\ | docker login --username AWS --password-stdin "\${AWS_URL}" """ } } } } // stage('Push Image') { // steps { // sh "docker push ${AWS_IMAGE}" // } // } } }