[Jenkins3]-Jenkins部署上线流程

目录

一.UPLOAD(更新)

二.CREATE(创建)

三.ROLLBACK(回滚)


一.UPLOAD(更新)

CATALINA_OPTS

-server -XX:+UseContainerSupport -XX:MaxRAMPercentage=70 -XX:+UnlockExperimentalVMOptions -XX:+UseCGroupMemoryLimitForHeap -Djava.security.egd=file:/dev/./urandom -Duser.timezone=GMT+08 -Dfile.encoding=UTF-8 -Dsun.jnu.encoding=UTF-8 -Duser.timezone=Asia/Shangha

 #部署流水线

Pipeline流水线脚本

用到的Pythonjiao

node('jenkins-slave') {
    stage('SVN Clone | Maven') {
           sh '''
            svn co --username xxxx --password xxxxxx svn://xxx.xxx.xx.xx/svn/ywf_java/${maven_job}/${svn} ${WORKSPACE}/${jobs_name}
           echo "compole starting"
           cd ${WORKSPACE}/${jobs_name}
           /usr/local/maven/bin/mvn clean install -P product -Dmaven.test.skip=true -Dmaven.javadoc.skip=true
           echo "compile over"
           mkdir -p ${WORKSPACE}/ROOT
           mv ${WORKSPACE}/${jobs_name}/${jobs_name}/target/${jobs_name}.war ${WORKSPACE}/ROOT
           cd ${WORKSPACE}/ROOT
           unzip ${jobs_name}.war
           rm -rf ${jobs_name}.war
           cd ${WORKSPACE}/
           '''
    }
    stage('IMAGE Build') {
           sh '''
           BASE_IMAGE="linuxwei/jdk_tomcat:7.0.104-jdk8-adoptopenjdk-openj9"
            echo "From ${BASE_IMAGE}" >> ${WORKSPACE}/Dockerfile
            echo "ADD ROOT /usr/local/tomcat/webapps/ROOT" >> ${WORKSPACE}/Dockerfile
            echo 'CMD ["catalina.sh", "run"]' >> ${WORKSPACE}/Dockerfile
           '''

      echo "3.Docker Build Stage"
            sh '''
              docker login --username=xxxxxx ccr.ccs.tencentyun.com --password xxxxxx
              docker build -t ccr.ccs.tencentyun.com/ywf-online/${jobs_name}-online:${image_version} ${WORKSPACE}
              docker push ccr.ccs.tencentyun.com/ywf-online/${jobs_name}-online:${image_version}
            '''
    }
    stage('Deploy') {
      echo "4. Deploy Stage"
      sh'''
      /usr/bin/python3 /home/jenkins/python3/jenkins_upload.py $jobs_name /home/jenkins/python3 ccr.ccs.tencentyun.com/xxxxx/${jobs_name}-online:${image_version} CATALINA_OPTS "$CATALINA_OPTS"
      kubectl apply -f /home/jenkins/python3/$jobs_name-online.yaml
      rm -rf /home/jenkins/python3/$jobs_name-online.yaml
      kubectl rollout status -n apm deployment $jobs_name-online
      '''
    }
    stage('Imagetags update'){
        sh '''
        /usr/bin/python3 /home/jenkins/python3/get_image_tags.py ywf-online/${jobs_name}-online /home/jenkins/image_tags/${jobs_name}-online.txt
        '''
    }
}

二.CREATE(创建)

CATALINA_OPTS

-server -XX:+UseContainerSupport -XX:MaxRAMPercentage=70 -XX:+UnlockExperimentalVMOptions  -XX:+UseCGroupMemoryLimitForHeap -Djava.security.egd=file:/dev/./urandom  -Duser.timezone=GMT+08 -Dfile.encoding=UTF-8 -Dsun.jnu.encoding=UTF-8 -Duser.timezone=Asia/Shangha

JAVA_TOOL_OPTIONS0                #这里加0是为了不与jenkins-slave这个Pod中的环境变量冲突,坑

-XX:+IgnoreUnrecognizedVMOptions -XX:+UseContainerSupport -XX:+IdleTuningCompactOnIdle -XX:+IdleTuningGcOnIdle

Pipeline流水线脚本

用到的Python脚本

node('jenkins-slave') {
    stage('SVN Clone | Maven') {
           sh '''
           svn co --username xxxx --password xx svn://xxx.xx.xx.x/svn/ywf_java/${maven_job}/${svn} ${WORKSPACE}/${jobs_name}
           echo "compole starting"
           cd ${WORKSPACE}/${jobs_name}
           /usr/local/maven/bin/mvn clean install -Dmaven.test.skip=true -Dmaven.javadoc.skip=true
           echo "compile over"
           mkdir -p ${WORKSPACE}/ROOT
           mv ${WORKSPACE}/${jobs_name}/${jobs_name}/target/${jobs_name}.war ${WORKSPACE}/ROOT
           cd ${WORKSPACE}/ROOT
           unzip ${jobs_name}.war
           rm -rf ${jobs_name}.war
           cp -r ${WORKSPACE}/ROOT/WEB-INF/classes/idc_config/* ${WORKSPACE}/ROOT/WEB-INF/classes/config/
           cd ${WORKSPACE}/
           '''
    }
    stage('IMAGE Build') {
           sh '''
           BASE_IMAGE="linuxwei/jdk_tomcat:7.0.104-jdk8-adoptopenjdk-openj9"
            echo "From ${BASE_IMAGE}" >> ${WORKSPACE}/Dockerfile
            echo "ADD ROOT /usr/local/tomcat/webapps/ROOT" >> ${WORKSPACE}/Dockerfile
            echo 'CMD ["catalina.sh", "run"]' >> ${WORKSPACE}/Dockerfile
           '''

      echo "3.Docker Build Stage"
            sh '''
              docker login --username=xxxxx ccr.ccs.tencentyun.com --password xxxxxxx
              docker build -t ccr.ccs.tencentyun.com/xxxxx/${jobs_name}-online:${image_version} ${WORKSPACE}
              docker push ccr.ccs.tencentyun.com/xxxxxx/${jobs_name}-online:${image_version}
            '''
    }
    stage('Deploy') {
      echo "4. Deploy Stage"
      sh'''
      /usr/bin/python3 /home/jenkins/python3/create_deployment_yaml.py /home/jenkins/python3 "$jobs_name" "$pod_number" ccr.ccs.tencentyun.com/ywf-online/${jobs_name}-online:${image_version} "$port" "$cpu_limits" "$mem_limits" "$cpu_requests" "$mem_requests" "$JAVA_TOOL_OPTIONS0" "$CATALINA_OPTS"
      kubectl apply -f /home/jenkins/python3/$jobs_name-online.yaml
      rm -rf /home/jenkins/python3/$jobs_name-online.
      kubectl rollout status -n apm deployment $jobs_name-online
      '''
    }
    stage('Imagetags update'){
        sh '''
        /usr/bin/python3 /home/jenkins/python3/get_image_tags.py ywf-online/${jobs_name}-online /home/jenkins/image_tags/${jobs_name}-online.txt
        '''
    }
}

三.ROLLBACK(回滚)

执行SHELL

NAMESPACE=apm
kubectl set image deployment/${jobs_name}-online -n ${NAMESPACE} ${jobs_name}-online=ccr.ccs.tencentyun.com/ywf-online/${jobs_name}-online:${rollback_tag}
kubectl rollout status -n apm deployment $jobs_name-online

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值