Add Jenkins SCM webhook
This commit is contained in:
parent
df34ebbc1f
commit
3eea28979e
1 changed files with 20 additions and 28 deletions
48
Jenkinsfile
vendored
48
Jenkinsfile
vendored
|
|
@ -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
|
||||
"""
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in a new issue