diff --git a/Jenkinsfile b/Jenkinsfile index c52438a..7fa336a 100644 --- a/Jenkinsfile +++ b/Jenkinsfile @@ -1,49 +1,41 @@ pipeline { agent any + triggers { + githubPush() // Enables webhook support via GitHub-style POST + } + environment { REGISTRY = 'codeberg.org' IMAGE_NAME = "${REGISTRY}/lvl0/incr" - DOCKER_CREDENTIALS_ID = 'codeberg-registry' // Jenkins credentials ID + DOCKER_CREDENTIALS_ID = 'codeberg-registry' } stages { - stage('Detect Tag') { + stage('Tag Check') { steps { script { - def tag = sh(script: 'git describe --tags --exact-match || true', returnStdout: true).trim() - if (tag) { - env.GIT_TAG = tag - echo "✅ Detected tag: ${tag}" - } else { - echo "⛔ No tag detected — skipping build" - currentBuild.result = 'SUCCESS' - error("Skipping non-tag build") + def isTag = sh(script: 'git describe --tags --exact-match || echo "nope"', returnStdout: true).trim() + if (isTag == "nope") { + echo "Not a tag. Skipping build." + currentBuild.result = 'NOT_BUILT' + return } } } } - - stage('Build Docker Image') { - steps { - echo "⚙️ Building Docker image: ${IMAGE_NAME}:${GIT_TAG}" - sh "docker build -f docker/Dockerfile -t ${IMAGE_NAME}:${GIT_TAG} ." + stage('Build & Push Docker Image') { + when { + expression { + return env.GIT_COMMIT && env.GIT_COMMIT != "" + } } - } - - stage('Push to Registry') { steps { - echo "📤 Pushing Docker image: ${IMAGE_NAME}:${GIT_TAG}" - withCredentials([ - usernamePassword( - credentialsId: DOCKER_CREDENTIALS_ID, - usernameVariable: 'USERNAME', - passwordVariable: 'PASSWORD' - ) - ]) { + sh 'docker build -t $IMAGE_NAME:$GIT_COMMIT .' + withCredentials([usernamePassword(credentialsId: "$DOCKER_CREDENTIALS_ID", usernameVariable: 'USERNAME', passwordVariable: 'PASSWORD')]) { sh """ - echo "${PASSWORD}" | docker login ${REGISTRY} -u "${USERNAME}" --password-stdin - docker push ${IMAGE_NAME}:${GIT_TAG} + echo "$PASSWORD" | docker login $REGISTRY -u "$USERNAME" --password-stdin + docker push $IMAGE_NAME:$GIT_COMMIT """ } }