Jenkins指定tag發佈到k8s環境html
首先要安裝插件:http://www.javashuo.com/article/p-qcthvutp-bx.htmljava
參數化構建過程node
Pipeline選擇Pipeline script from SCMgit
保存以後構建失敗會提示找不到Jenkinsfile,咱們只須要新建相應的Jenkinsfile文件便可docker
vim /root/.jenkins/workspace/sscp-xxx_sit@script/Jenkinsfilevim
node (){ //指定Slave標籤 stage('Git Checkout') { checkout([$class: 'GitSCM', branches: [[name: '${Tag}']], doGenerateSubmoduleConfigurations: false, extensions: [], submoduleCfg: [], userRemoteConfigs: [[url: 'git@code.aliyun.com:xx/xx.git']]]) } //代碼編譯 stage('Maven Build') { sh ''' export JAVA_HOME=/usr/local/java /usr/local/maven/bin/mvn clean package -Ppresit -Dmaven.test.skip=true ''' } stage('Build and Push Image') { sh ''' REPOSITORY=172.31.182.143/presit/sscp-xxx:${Tag} cp Dockerfile target/ cd target docker build -t $REPOSITORY . docker login -u admin -p Harbor%12345 172.31.182.143 docker push $REPOSITORY ''' } stage('Deploy to k8s') { sh ''' K8S_MASTER="172.31.182.152" APP="sscp-xxx" ENV="presit" ssh ${K8S_MASTER} -t "cd /root/helm/source/sscp-config/sscp-${ENV}/sscp-deploy-config;git checkout ${ENV};git pull" ssh ${K8S_MASTER} cp /root/helm/source/sscp-config/sscp-${ENV}/sscp-deploy-config/${APP}/values.yaml /root/helm/sscp-${ENV}/${APP}/values.yaml ssh ${K8S_MASTER} helm upgrade ${APP}-${ENV} -f /root/helm/sscp-${ENV}/${APP}/values.yaml --set app.updateVersion=`date +%s` chartmuseum/${APP} --set app.image.tag=${Tag} ''' } }
再次構建效果:bash