Jenkins script example

1. 参数化构建

2. Jenkins script

podTemplate(name: 'jenkins-slave-4000', cloud: 'kubernetes',
    namespace: 'default', label: 'jenkins-slave-4000',
    containers: [
        containerTemplate(
            name: 'jnlp',
            image: "${HARBOR_URL}/ops/jenkins-slave:v2.2.2",
            alwaysPullImage: true

        ),
    ],
    volumes: [
        hostPathVolume(mountPath: '/var/run/docker.sock', hostPath: '/var/run/docker.sock'),
        hostPathVolume(mountPath: '/usr/bin/docker', hostPath: '/usr/bin/docker'),
        hostPathVolume(mountPath: '/usr/local/java', hostPath: '/usr/local/jdk1.8.0_181'),
        hostPathVolume(mountPath: '/usr/local/maven', hostPath: '/usr/local/maven'),
    ],
    imagePullSecrets: ['harbor-pull-secret']
)
{

    node('jenkins-slave-4000'){

        stage('Git Checkout'){
            checkout([$class: 'GitSCM', branches: [[name: "origin/${branch}"]], doGenerateSubmoduleConfigurations: false, 
            submoduleCfg: [], userRemoteConfigs: [[credentialsId: "fd788290-8ae0-4207-9e68-e17fcc562275", url: "http://172.16.5.234/standardcmp/java-demo.git"]]])

        }
        stage('Build') {
            sh '''
            ls -la
            cd java-demo2
            mvn clean -Dmaven.test.skip=true package
            cp -f java-demo-gateway/target/java-demo-gateway-0.0.1-SNAPSHOT.jar CICD/mno.jar
            '''
        }
        stage('Build and Push Image'){
            withCredentials([usernamePassword(credentialsId: 'ecd8b664-a4bb-4269-847f-cf1bb96b8006', passwordVariable: 'password', usernameVariable: 'username')]) {
                sh '''
                ls -la
                cd java-demo2/CICD
                docker login -u $username -p $password ${HARBOR_URL}
               docker build --build-arg HARBOR_URL=$HARBOR_URL  --build-arg MEM_REQUEST=${MEM_REQUEST} -t ${HARBOR_URL}/java-demo/java-demo:${BUILD_TIMESTAMP}  .
                docker push ${HARBOR_URL}/java-demo/java-demo:${BUILD_TIMESTAMP}
                docker tag ${HARBOR_URL}/java-demo/java-demo:${BUILD_TIMESTAMP} ${HARBOR_URL}/java-demo/java-demo:${K8S_ENV}
                docker push ${HARBOR_URL}/java-demo/java-demo:${K8S_ENV}
                '''
            }
        }
        stage('Deploy to k8s'){
            sh '''
            cd  java-demo2/CICD
            ls -la
                sed -i "s/:latest/:${BUILD_TIMESTAMP}/;s/HARBOR_URL/${HARBOR_URL}/;s/SERVICE_PORT/${SERVICE_PORT}/;s/K8S_ENV/${K8S_ENV}/;s/MEM_REQUEST/${MEM_REQUEST}/" deploy.yaml
            '''

            kubernetesDeploy configs: 'java-demo2/CICD/deploy.yaml',
            kubeConfig: [path: ''], kubeconfigId: "4557ba41-47b1-4f64-b5da-40fe95bb07ce", secretName: '', ssh: [sshCredentialsId: '*', sshServer: ''],
            textCredentials: [certificateAuthorityData: '', clientCertificateData: '', clientKeyData: '', serverUrl: 'https://']
            
        }
    }
}

 

posted @ 2024-05-12 21:50  littlevigra  阅读(28)  评论(0编辑  收藏  举报