Jenkins declarative pipeline for kubernetes deployment and git/gitlab

 // Uses Declarative syntax to run commands inside a container.

def project = 'node'


pipeline {
        agent { label 'the_agent' }
       
         environment {
    project = 'node'
         }
    stages {
        stage('check agent hostname') {
            steps {
                sh 'hostname'
            }
             
       }  
       
        stage('docker version') {
            steps {

                sh 'docker -v'
               
            }
        }
        stage('git download projects') {
            steps {

       
       git branch: 'main', credentialsId: 'sid_obtained_from_jenkins_plugin', url: 'git@gitlab.com:blabla/blablabla.git'

            }    
           
        }
       
          stage('docker build') {
            steps {
                script {
                sh 'whoami'
                sh 'cd /home/jenkins/workspace/vbuild_the_agentfolder_node && docker build . -t thelocalregistry.locallab:45000/${project}:$BUILD_NUMBER'
                }
            }
         }
          stage('docker push') {
            steps {
                script {
                sh 'docker push thelocalregistry.locallab:45000/${project}:$BUILD_NUMBER'
                }
            }
         }
         stage('create yaml deployment') {
            steps {
                script {
                sh '''
                cat << EOF > dp-${project}-$BUILD_NUMBER.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
  namespace: be
  name: dp-${project}
  labels:
    appname: ${project}
spec:
  selector:
    matchLabels:
      appname: ${project}
  template:
    metadata:
      labels:
        appname: ${project}
    spec:
      containers:
      - name: ${project}
        imagePullPolicy: Always
        image: thelocalregistry.locallab:45000/${project}:$BUILD_NUMBER
      imagePullSecrets:
      - name: be-regthelocalregistry.locallab
EOF
                '''
                }
            }
         }
         stage('apply k8s') {
            steps {
                script {
                sh 'kubectl apply -f dp-${project}-$BUILD_NUMBER.yaml'
                }
            }
         }
         
     }
}

Commenti

Post popolari in questo blog

Teams Incoming Webhook deprecated: Use PowerAutomate - Workflow

Mysql operator S3 innodbcluster backup SECRET CONFIG

Fedora - KVM - qemu - Windows 11 guest. error: swtpm at /usr/bin/swtpm does not support TPM 2