码迷,mamicode.com
首页 > 其他好文 > 详细

Jenkins pipeline的语法实例介绍及踩坑记录

时间:2020-07-16 18:30:29      阅读:106      评论:0      收藏:0      [点我收藏+]

标签:deploy   执行   module   system   workspace   java程序   $2   问题   evel   

本文介绍一下Jenkins pipeline的语法实例介绍及踩坑记录
废话不多说,直接上案例

pipeline{
    agent any
    stages {
        stage(‘download‘) {
            steps{
                echo ‘This is a build step‘
                git credentialsId: ‘0c3d0852-8a03-42e2-a893-a445308a257b‘, url: ‘http://192.168.0.6/softwaredevelopment/eduplat.git‘
            }
        }
        stage(‘buildUI‘) {
            steps{
                sh label: ‘‘, script: ‘cd /data/workspace/eduPlat/ui && yarn run build‘
                sh label: ‘‘, script: ‘rm -rf /usr/share/nginx/html/*‘
                sh label: ‘‘, script: ‘mv -f /data/workspace/eduPlat/ui/dist/* /usr/share/nginx/html/‘
            }
        }
        stage(‘killjava‘) {
            steps{
                echo ‘This is a stop jeecg-boot-module-system-2.1.4.jar‘
                sh label: ‘‘, script: ‘BUILD_ID=DONTKILLME‘
                sh label: ‘‘, script: ‘ps -ef | grep "java -jar eduplat-boot-module-system-2.1.4.jar"| grep -v grep|awk \‘{print $2}\‘ | xargs kill -9‘
            }
        }
        stage(‘buildBOOT‘) {
            steps{
                echo ‘This is a build boot step‘
                sh label: ‘‘, script: ‘sh /opt/buildBOOT.sh‘
            }
        }
        stage(‘start java‘) {
            steps{
                echo ‘This is a deploy step‘
                sh label: ‘‘, script: ‘source /etc/profile‘
                sh label: ‘‘, script: ‘sh /opt/startjar.sh‘
                sh label: ‘‘, script: ‘nginx -s reload‘
            }
        }
    }
}

说明:
1、stage(‘download‘) 这步中, git credentialsId的编码来自http://{ip}/job/eduPlat/pipeline-syntax/语法流水线
技术图片
2、 stage(‘buildUI‘)这步中,
sh label: ‘‘, script: ‘cd /data/workspace/eduPlat/ui && yarn run build‘来自于
技术图片
其他也是以此类推
3、划重点。 stage(‘start java‘) 这步中,我采用了脚本的形式

source /etc/profile
export JENKINS_NODE_COOKIE=dontKillMe
cd /data/workspace/eduPlat/eduplat-boot/eduplat-boot-module-system/target/
nohup java -Dhudson.util.ProcessTree.disable=true -jar eduplat-boot-module-system-2.1.4.jar > eduplat-boot-module-system-2.1.4.out 2>&1 &

(1)export JENKINS_NODE_COOKIE=dontKillMe很重要,pipeline在退出node{}的时候,会默认清理自己发出的每个shell命令,即使使用了nohup。
(2)后台执行java程序,一定要加上{-Dhudson.util.ProcessTree.disable=true}
这个参数,否则pipeline执行完成后,java也就自动退出了。
(3)为什么我采用脚本的方式进行这个命令的执行呢?因为cd 和 nohup要是在pipeline中执行的话,不能采用两个step的形式,必须合成为一条,用&&。pipeline默认这是两个不同的命令。但是合成一条命令的话,就又太长了。所以我直接写在脚本中,也便于查找问题

划重点:欢迎点赞(#^.^#)

Jenkins pipeline的语法实例介绍及踩坑记录

标签:deploy   执行   module   system   workspace   java程序   $2   问题   evel   

原文地址:https://blog.51cto.com/lovejxs/2511142

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!