|
@@ -0,0 +1,122 @@
|
|
|
|
|
+pipeline {
|
|
|
|
|
+ agent { label 'dokskan_central_image_build' }
|
|
|
|
|
+
|
|
|
|
|
+ environment {
|
|
|
|
|
+ HARBOR_REGISTRY = 'registry.colettapaolo.com'
|
|
|
|
|
+ HARBOR_PROJECT = 'dokskan'
|
|
|
|
|
+ IMAGE_NAME = 'dokskan_central'
|
|
|
|
|
+
|
|
|
|
|
+ HARBOR_CREDENTIALS = credentials('harbor_credentials_id')
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ triggers {
|
|
|
|
|
+ GenericTrigger(
|
|
|
|
|
+ genericVariables: [
|
|
|
|
|
+ [key: 'ref', value: '$.ref'],
|
|
|
|
|
+ [key: 'pusher', value: '$.pusher.username']
|
|
|
|
|
+ ],
|
|
|
|
|
+
|
|
|
|
|
+ genericHeaderVariables: [
|
|
|
|
|
+ ],
|
|
|
|
|
+
|
|
|
|
|
+ regexpFilterText: '$ref',
|
|
|
|
|
+ regexpFilterExpression: '^refs/heads/main$',
|
|
|
|
|
+
|
|
|
|
|
+ token: '8hBvzVnlwUnDVbvRWPQIHUTPFuiGUUAii9sD1xu1sMeGJkNLWbaGYJO8l3yVMZPl',
|
|
|
|
|
+ causeString: 'Triggered by Gogs on branch: $ref',
|
|
|
|
|
+ printContributedVariables: true,
|
|
|
|
|
+ printPostContent: true
|
|
|
|
|
+ )
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ stages {
|
|
|
|
|
+ stage('Info') {
|
|
|
|
|
+ steps {
|
|
|
|
|
+ echo "Branch: ${ref}"
|
|
|
|
|
+ echo "Pusher: ${pusher}"
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ stage('Checkout') {
|
|
|
|
|
+ steps {
|
|
|
|
|
+ echo 'Checking out code...'
|
|
|
|
|
+ checkout scm
|
|
|
|
|
+
|
|
|
|
|
+ script {
|
|
|
|
|
+ env.GIT_COMMIT_SHORT = sh(
|
|
|
|
|
+ script: "git rev-parse --short HEAD",
|
|
|
|
|
+ returnStdout: true
|
|
|
|
|
+ ).trim()
|
|
|
|
|
+
|
|
|
|
|
+ env.GIT_COMMIT_FULL = sh(
|
|
|
|
|
+ script: "git rev-parse HEAD",
|
|
|
|
|
+ returnStdout: true
|
|
|
|
|
+ ).trim()
|
|
|
|
|
+
|
|
|
|
|
+ echo "Commit ID (short): ${env.GIT_COMMIT_SHORT}"
|
|
|
|
|
+ echo "Commit ID (full): ${env.GIT_COMMIT_FULL}"
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ stage('Build Docker Image') {
|
|
|
|
|
+ steps {
|
|
|
|
|
+ echo "Building Docker image with tag: ${env.GIT_COMMIT_SHORT}"
|
|
|
|
|
+ script {
|
|
|
|
|
+
|
|
|
|
|
+ sh """
|
|
|
|
|
+ docker build -t ${HARBOR_REGISTRY}/${HARBOR_PROJECT}/${IMAGE_NAME}:${env.GIT_COMMIT_SHORT} .
|
|
|
|
|
+ docker tag ${HARBOR_REGISTRY}/${HARBOR_PROJECT}/${IMAGE_NAME}:${env.GIT_COMMIT_SHORT} \
|
|
|
|
|
+ ${HARBOR_REGISTRY}/${HARBOR_PROJECT}/${IMAGE_NAME}:latest
|
|
|
|
|
+ """
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ stage('Login to Harbor') {
|
|
|
|
|
+ steps {
|
|
|
|
|
+ echo 'Logging into Harbor registry...'
|
|
|
|
|
+ sh """
|
|
|
|
|
+ echo ${HARBOR_CREDENTIALS_PSW} | docker login ${HARBOR_REGISTRY} \
|
|
|
|
|
+ -u ${HARBOR_CREDENTIALS_USR} \
|
|
|
|
|
+ --password-stdin
|
|
|
|
|
+ """
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ stage('Push to Harbor') {
|
|
|
|
|
+ steps {
|
|
|
|
|
+ echo "Pushing image to Harbor..."
|
|
|
|
|
+ sh """
|
|
|
|
|
+ docker push ${HARBOR_REGISTRY}/${HARBOR_PROJECT}/${IMAGE_NAME}:${env.GIT_COMMIT_SHORT}
|
|
|
|
|
+ docker push ${HARBOR_REGISTRY}/${HARBOR_PROJECT}/${IMAGE_NAME}:latest
|
|
|
|
|
+ """
|
|
|
|
|
+
|
|
|
|
|
+ echo "✅ Image pushed: ${HARBOR_REGISTRY}/${HARBOR_PROJECT}/${IMAGE_NAME}:${env.GIT_COMMIT_SHORT}"
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ stage('Cleanup') {
|
|
|
|
|
+ steps {
|
|
|
|
|
+ echo 'Cleaning up local images...'
|
|
|
|
|
+ sh """
|
|
|
|
|
+ docker rmi ${HARBOR_REGISTRY}/${HARBOR_PROJECT}/${IMAGE_NAME}:${env.GIT_COMMIT_SHORT} || true
|
|
|
|
|
+ docker rmi ${HARBOR_REGISTRY}/${HARBOR_PROJECT}/${IMAGE_NAME}:latest || true
|
|
|
|
|
+ """
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ post {
|
|
|
|
|
+ always {
|
|
|
|
|
+ sh 'docker logout ${HARBOR_REGISTRY} || true'
|
|
|
|
|
+ }
|
|
|
|
|
+ success {
|
|
|
|
|
+ echo "✅ Pipeline completata!"
|
|
|
|
|
+ echo "Immagine: ${HARBOR_REGISTRY}/${HARBOR_PROJECT}/${IMAGE_NAME}:${env.GIT_COMMIT_SHORT}"
|
|
|
|
|
+ }
|
|
|
|
|
+ failure {
|
|
|
|
|
+ echo '❌ Pipeline fallita'
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+}
|