pipeline { agent { label 'dokskan_central_image_build' } // a 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' } } }