incr/Jenkinsfile

72 lines
1.9 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:40:07 +02:00
GenericTrigger(
2025-07-14 21:01:41 +02:00
causeString: 'Triggered by push event',
2025-07-14 20:38:53 +02:00
token: 'tag-trigger-secret',
printContributedVariables: true,
printPostContent: true,
2025-07-14 20:50:34 +02:00
genericVariables: [
[key: 'ref', value: '$.ref'],
[key: 'after', value: '$.after']
]
2025-07-14 20:38:53 +02:00
)
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 21:01:41 +02:00
stage('Tag Push Filter') {
2025-07-13 21:53:58 +02:00
steps {
script {
2025-07-14 21:01:41 +02:00
if (!env.ref?.startsWith('refs/tags/')) {
echo "Not a tag push (ref = ${env.ref}). Skipping build."
2025-07-14 20:11:52 +02:00
currentBuild.result = 'NOT_BUILT'
return
2025-07-13 21:53:58 +02:00
}
2025-07-14 21:01:41 +02:00
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})"
2025-07-13 21:51:56 +02:00
}
2025-07-13 21:53:58 +02:00
}
}
2025-07-14 21:01:41 +02:00
2025-07-14 20:11:52 +02:00
stage('Build & Push Docker Image') {
when {
expression {
2025-07-14 21:17:31 +02:00
return env.ref?.startsWith('refs/tags/') && env.after !=~ /^0{40}$/
2025-07-14 20:11:52 +02:00
}
2025-07-13 21:53:58 +02:00
}
steps {
2025-07-14 21:13:31 +02:00
script {
def tagName = env.ref?.replaceFirst(/^refs\/tags\//, '')
2025-07-14 21:17:31 +02:00
echo "Building image for tag: ${tagName}"
// Build both the tag and latest
sh """
docker build -t $IMAGE_NAME:${tagName} -t $IMAGE_NAME:latest -f docker/Dockerfile .
"""
2025-07-14 21:13:31 +02:00
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}
2025-07-14 21:17:31 +02:00
docker push $IMAGE_NAME:latest
2025-07-14 21:13:31 +02:00
"""
}
2025-07-13 21:55:03 +02:00
}
}
}
}
}