70 lines
2.2 KiB
Groovy
70 lines
2.2 KiB
Groovy
pipeline {
|
|
agent {
|
|
label 'podman'
|
|
}
|
|
tools {
|
|
go '1.21.1'
|
|
}
|
|
environment {
|
|
registry = "docker.io/notatio/notatio"
|
|
registryCredential = 'docker-hub-credentials'
|
|
podmanImage = ''
|
|
}
|
|
stages {
|
|
stage('Clone repository') {
|
|
steps {
|
|
git branch: 'main', credentialsId: 'codeberg-musselman-builder-jenkins', url: 'https://codeberg.org/Musselman/Notatio.git'
|
|
}
|
|
}
|
|
stage('Retrieve Git tag') {
|
|
steps {
|
|
script {
|
|
def tagOutput = sh(script: 'git describe --abbrev=0 --tags || true', returnStdout: true).trim()
|
|
if (tagOutput.isEmpty() || tagOutput.equals("fatal: No names found, cannot describe anything.")) {
|
|
TAG = 'latest' // Set a default tag if no tags are found
|
|
echo "No tags found, using default tag: ${TAG}"
|
|
} else {
|
|
TAG = tagOutput
|
|
echo "Latest tag found: ${TAG}"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
stage('Build') {
|
|
steps {
|
|
echo 'Building..'
|
|
sh 'go build'
|
|
}
|
|
}
|
|
stage('Test') {
|
|
steps {
|
|
echo 'Testing..'
|
|
echo 'No Testing to do currently..'
|
|
}
|
|
}
|
|
stage('Building image') {
|
|
steps {
|
|
script {
|
|
sh "podman build -t notatio ."
|
|
}
|
|
}
|
|
}
|
|
stage('Push image') {
|
|
steps {
|
|
script {
|
|
withCredentials([usernamePassword(credentialsId: registryCredential, passwordVariable: 'REGISTRY_PASSWORD', usernameVariable: 'REGISTRY_USERNAME')]) {
|
|
sh "podman login -u $REGISTRY_USERNAME -p $REGISTRY_PASSWORD docker.io"
|
|
sh "podman push notatio $registry:${TAG}"
|
|
sh "podman logout $registry"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
stage('Cleanup') {
|
|
steps {
|
|
sh "podman rmi -a -f"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|