本文介绍一下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默认这是两个不同的命令。但是合成一条命令的话,就又太长了。所以我直接写在脚本中,也便于查找问题
划重点:欢迎点赞(#^.^#)