Bläddra i källkod

add jenkinsfile

pcoletta 7 timmar sedan
förälder
incheckning
bd2f7556ca
1 ändrade filer med 122 tillägg och 0 borttagningar
  1. 122 0
      Jenkinsfile

+ 122 - 0
Jenkinsfile

@@ -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'
+        }
+    }
+}