目录
pipeline 流水线的使用
脚本示例
pipeline {
agent any
stages {
stage('Hello') {
steps {
git branch: 'main', credentialsId: '221cd873-1038-474f-9f7c-92a84bb9bcb7', url: 'http://192.168.100.66:180/octopus/Testexample.git'
echo 'Hello World'
}
}
stage('编译打包') {
steps {
sh '''export JAVA_HOME=/root/tools/jdk1.8
mvn clean install'''
echo 'maven构建完成'
}
}
stage('启动jar') {
steps {
//设置后台保活
/**
*第一行设置后台保活
* 第二行杀死旧的进程
* 第三行复制jar
* 第四行启动运行 jar
*/
sh '''
export JENKINS_NODE_COOKIE=asdsdfsdf
ps -ef|grep TestExample-0.0.1-SNAPSHOT.jar|awk '{print $2}'|xargs echo
cp target/*.jar /root/jar
java -jar /root/jar/*.jar &>/root/jar/nohup.out &
'''
echo '启动 jar'
}
}
}
}
语法
pipeline 定义流水线标志
stages 定义阶段
stage 定义具体的阶段
steps 定义一个阶段里面的的步骤,里面是具体的每一个步骤
我们需要关心的只是steps 里面每一个步骤应该怎么写
点击流水线语法后面有代码生成器
生成拉取git的代码
示例步骤里面可以选很多模型,比如配置git拉取代理,发送文件到目标服务器,执行 shell 脚本,发送邮件等等
生成代码以后铁道对应的steps 里面就行
沙盒允许的脚本不需要审核
非沙盒脚本审核的位置
没有勾选 Grovy 沙盒选项的代码需要 点击审核的脚本才能运行
执行 Java -jar 文件进程退出问题
如果是pipeline风格的项目
export JENKINS_NODE_COOKIE=xxx,可以让执行脚本的时候后台保活
sh '''export JENKINS_NODE_COOKIE=dontkillme
cp target/*.jar /root/jar
nohup java -jar /root/jar/*jar &>nohup.out &'''
echo 'run jar'
如果是自由风格
export BUILD_ID=xxx,可以让后台保活
export BUILD_ID=dontkillme
ps -ef|grep TestExample-0.0.1-SNAPSHOT.jar|awk '{print $2}'|xargs echo
cp target/*.jar /root/jar
java -jar /root/jar/*.jar &>/root/jar/nohup.out &
Jenkinsfile
jenkins的构建脚本可以放在jenkins里面,也可以放在git仓库。
比如在项目中通过Jenkinsfile定义构建脚本,然后jenkins去git取构建脚本,以此来构建流水线。