diff --git a/Jenkinsfile b/Jenkinsfile index fa4b705..4074927 100644 --- a/Jenkinsfile +++ b/Jenkinsfile @@ -3,10 +3,12 @@ pipeline { triggers { GenericTrigger( - causeString: 'Triggered by push event', + causeString: 'Triggered on tag push', token: 'tag-trigger-secret', printContributedVariables: true, printPostContent: true, + regexpFilterExpression: 'ref=refs/tags/.*\nafter=(?!0{40}).*', + regexpFilterText: '$ref\n$after', genericVariables: [ [key: 'ref', value: '$.ref'], [key: 'after', value: '$.after'] @@ -29,14 +31,6 @@ pipeline { currentBuild.result = 'NOT_BUILT' return } - - if (env.after == null || env.after ==~ /^0{40}$/) { - echo "After SHA is null or zeroed (after = ${env.after}). Skipping build." - currentBuild.result = 'NOT_BUILT' - return - } - - echo "Valid tag push detected: ${env.ref} (${env.after})" } } } @@ -44,23 +38,21 @@ pipeline { stage('Build & Push Docker Image') { when { expression { - return env.ref?.startsWith('refs/tags/') && env.after !=~ /^0{40}$/ + return env.ref?.startsWith('refs/tags/') && env.after != null && env.after != "0000000000000000000000000000000000000000" } } steps { script { - def tagName = env.ref?.replaceFirst(/^refs\/tags\//, '') - echo "Building image for tag: ${tagName}" + def tagName = env.ref.replaceFirst(/^refs\/tags\//, '') + def cleanedTag = tagName.replaceFirst(/^v/, '') - // Build both the tag and latest - sh """ - docker build -t $IMAGE_NAME:${tagName} -t $IMAGE_NAME:latest -f docker/Dockerfile . - """ + sh "docker build -t $IMAGE_NAME:$cleanedTag -f docker/Dockerfile ." withCredentials([usernamePassword(credentialsId: "$DOCKER_CREDENTIALS_ID", usernameVariable: 'USERNAME', passwordVariable: 'PASSWORD')]) { sh """ echo "$PASSWORD" | docker login $REGISTRY -u "$USERNAME" --password-stdin - docker push $IMAGE_NAME:${tagName} + docker push $IMAGE_NAME:$cleanedTag + docker tag $IMAGE_NAME:$cleanedTag $IMAGE_NAME:latest docker push $IMAGE_NAME:latest """ }