incr/Jenkinsfile

52 lines
1.3 KiB
Text
Raw Normal View History

2025-07-13 21:51:56 +02:00
pipeline {
2025-07-13 21:53:58 +02:00
agent any
2025-07-13 21:51:56 +02:00
2025-07-14 20:11:52 +02:00
triggers {
2025-07-14 20:38:53 +02:00
genericTrigger(
causeString: 'Triggered on tag push',
token: 'tag-trigger-secret',
printContributedVariables: true,
printPostContent: true,
regexpFilterExpression: 'ref=refs/tags/.*',
regexpFilterText: '$ref'
)
2025-07-14 20:11:52 +02:00
}
2025-07-13 21:53:58 +02:00
environment {
REGISTRY = 'codeberg.org'
IMAGE_NAME = "${REGISTRY}/lvl0/incr"
2025-07-14 20:11:52 +02:00
DOCKER_CREDENTIALS_ID = 'codeberg-registry'
2025-07-13 21:53:58 +02:00
}
2025-07-13 21:51:56 +02:00
2025-07-13 21:53:58 +02:00
stages {
2025-07-14 20:11:52 +02:00
stage('Tag Check') {
2025-07-13 21:53:58 +02:00
steps {
script {
2025-07-14 20:11:52 +02:00
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
2025-07-13 21:53:58 +02:00
}
2025-07-13 21:51:56 +02:00
}
2025-07-13 21:53:58 +02:00
}
}
2025-07-14 20:11:52 +02:00
stage('Build & Push Docker Image') {
when {
expression {
return env.GIT_COMMIT && env.GIT_COMMIT != ""
}
2025-07-13 21:53:58 +02:00
}
steps {
2025-07-14 20:38:53 +02:00
sh 'docker build -t $IMAGE_NAME:$GIT_COMMIT -f docker/Dockerfile .'
2025-07-14 20:11:52 +02:00
withCredentials([usernamePassword(credentialsId: "$DOCKER_CREDENTIALS_ID", usernameVariable: 'USERNAME', passwordVariable: 'PASSWORD')]) {
2025-07-13 21:55:03 +02:00
sh """
2025-07-14 20:11:52 +02:00
echo "$PASSWORD" | docker login $REGISTRY -u "$USERNAME" --password-stdin
docker push $IMAGE_NAME:$GIT_COMMIT
2025-07-13 21:55:03 +02:00
"""
}
}
}
}
}