// 需要在jenkins的Credentials设置中配置jenkins-harbor-creds、jenkins-k8s-config参数 pipeline { agent any environment { HARBOR_CREDS = credentials('jenkins-harbor-creds') K8S_CONFIG = credentials('jenkins-k8s-config') GIT_TAG = sh(returnStdout: true,script: 'git describe --tags --always').trim() } parameters { string(name: 'HARBOR_HOST', defaultValue: 'registry.shuame.org', description: 'harbor仓库地址') string(name: 'DOCKER_IMAGE', defaultValue: 'mp/web-login', description: 'docker镜像名') string(name: 'K8S_NAMESPACE', defaultValue: 'test', description: 'k8s的namespace名称') } stages { stage('CheckOut') { steps{ checkout([$class: 'GitSCM', branches: [[name: '*/' + REF]], doGenerateSubmoduleConfigurations: false, extensions: [], submoduleCfg: [], userRemoteConfigs: [[credentialsId: 'c9b98967-64b4-416c-b10d-c5cf104538d6', url: 'http://8.8.8.git']]]) } // stage('Go Build') { // when { expression { env.GIT_TAG != null } } // steps { // script { // // 默认将使用根路径的 Dockerfile 进行构建 // docker.build('${params.HARBOR_HOST}/${params.DOCKER_IMAGE}:${GIT_TAG}') // // } // } // } stage('Go Build') { when { allOf { expression { env.GIT_TAG != null } } } steps { unstash 'app' sh "docker login -u ${HARBOR_CREDS_USR} -p ${HARBOR_CREDS_PSW} ${params.HARBOR_HOST}" sh "docker build -t ${params.HARBOR_HOST}/${params.DOCKER_IMAGE}:${GIT_TAG} ." sh "docker push ${params.HARBOR_HOST}/${params.DOCKER_IMAGE}:${GIT_TAG}" sh "docker rmi ${params.HARBOR_HOST}/${params.DOCKER_IMAGE}:${GIT_TAG}" } } stage('Deploy') { when { allOf { expression { env.GIT_TAG != null } } } steps { sh "mkdir -p ~/.kube" sh "echo ${K8S_CONFIG} | base64 -d > ~/.kube/config" sh "sed -e 's#{{IMAGE}}#${params.HARBOR_HOST}/${params.DOCKER_IMAGE}:${GIT_TAG}#g' k8s-deploy.yaml" sh "istioctl kube-inject -f k8s-deploy.yaml | kubectl apply -f - -n ${K8S_NAMESPACE}" } } } } }
浙公网安备 33010602011771号