1、流水线命令特点
pipeline的声明式语法有一个非常重要的问题,
1、steps内部的命令,每一条单独的命令都在当前任务的工作目录下执行。
即使A命令切换到了一个新的目录,接下来的B命令并不会在对应的新目录中执行,而是在当前任务的工作目录下执行。如果非要在切换后的目录下执行命令B,那么采用shell中的 && 符号将多条命令拼接一起即可。
2、在流水线任务中,中文方式编写命令不友好,推荐在外面写好命令,再拷贝到里面
3、默认情况下,不支持shell里面的表达式,因为groovy有自己的条件表达式
4、如果jenkins的工作目录下存在同名目录,则获取失败
2、示例1、Pipeline使用命令构建【工作目录位置确认】
2.1、pipeline代码
pipeline {
agent any
stages {
stage('cmd-test') {
steps {
echo "命令测试"
sh 'pwd'
sh 'mkdir nihao '
sh 'cd nihao && pwd && mkdir buhao && cd buhao && pwd'
sh 'pwd && ls'
}
}
}
}
# 主要是验证工作目录的位置
2.2、构建并且查看日志

结果显示:
每一个sh命令都是在当前任务的工作目录中执行,如果需要切换工作目录,需要将多条命令合并,这是由于jenkins的job任务彼此之间是独立的运行空间,所以资源不共享。
3、示例2、Pipeline不支持管道
3.1、Pipeline代码
pipeline {
agent any
stages {
stage('Hello') {
steps {
sh 'num=$(docker ps | grep tomcat-web | wc -l)'
echo "$num"
echo '----------------------------'
}
}
}
}
3.2、构建且查看日志
3.2.1、报错显示

3.2.2、日志

结果显示:groovy 不支持我们常用的这种bash进阶语法,因为groovy 有自己独有的语法
4、示例3、出现同名目录就会导致任务中断
4.1、Pipeline代码
pipeline {
agent any
stages {
stage('Hello') {
steps {
sh 'git clone git@192.168.10.10:web/tomcat_pro.git'
echo '----------------------------'
sh 'git clone git@192.168.10.10:web/tomcat_pro.git'
}
}
}
}
4.2、构建且查看日志
4.2.1、报错显示

4.2.2、日志

结果显示:如果任务目录下,出现同名目录就会导致任务中断
5、实战:之前tomcat_pro项目修改为Pipeline【Pipeline+WebHook】
5.1、pipeline代码
pipeline {
agent any
stages {
stage('Prepare') {
steps {
echo "开始tomcat_web任务"
}
}
stage('CloneCode') {
steps {
echo "git获取代码"
sh 'rm -rf tomcat_pro'
sh 'git clone git@192.168.10.10:web/tomcat_pro.git'
sh 'cd tomcat_pro && pwd && git config --local user.name "jenkins" && git config --local user.email "jenkins@example.com"'
}
}
stage('ArchiveROOT') {
steps {
echo "制作ROOT.tar.gz"
sh 'cd tomcat_pro && tar -C tomcat-web -zcf tomcat-web/ROOT.tar.gz ROOT --remove-files'
}
}
stage('MakeDockerImage') {
steps {
echo "制作Docker镜像"
sh 'cd tomcat_pro && docker build -t tomcat-web:v0.1 ./tomcat-web'
}
}
stage('Deploy') {
steps {
echo "布署Docker镜像"
sh 'docker stop tomcat-web'
sh 'docker rm -f tomcat-web'
sh 'docker run -d --name tomcat-web -p 8081:8080 tomcat-web:v0.1'
}
}
}
}
5.2、构建且查看状态

5.3、查看日志

5.4、配置WebHook
5.4.1、jenkins上配置


5.4.2、Gitlab上配置


5.4.3、测试
