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' } stages { stage('Tag Check') { steps { script { 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 & Push Docker Image') { when { expression { return env.GIT_COMMIT && env.GIT_COMMIT != "" } } steps { 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_COMMIT """ } } } } }