Jenkins指定tag发布到k8s环境

Jenkins指定tag发布到k8s环境html

 

一、Jenkins配置一个Pipeline 工程

首先要安装插件: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