本篇介绍 Jenkins 流水线项目的配置及流水线脚本语法规则。至于 Jenkins 的安装及其它配置,我之前写过一篇文章可以查看。 https://www.yuque.com/testpu/pro/bo7lzr ,以下,演示也是基于这篇文章中介绍的 Jenkins 配置为准。
1、流水线项目配置
安装完流水线的插件可以,创建项目时会出现对应的流水线项目选项,如下:
输入名称,api_pipeline_dev 选中,流水线,即可创建对应项目。
至于,其它配置,如,git拉取代码,jdk,maven、远程服务器等,查看我的上一篇文章,这里只介绍 Jenkins 流水线项目的创建及流水线脚本。
2、流水线 api-jar包打包脚本
下面是 api jar包的构建及部署脚本。
2.1脚本说明:
1、编译构建脚本中这个命令非常关键,如果你的项目工程存在多个微服务,那么你从 Git 仓库拉取下来的代码多了一层目录(根目录中不会有 pom.xml 这个文件),此时必须要指定这个文件的位置,否则 maven 识别不了,哈哈哈哈。用如下的方式指定该文件的位置,比如:
# 指定pom.xml文件的位置,基于Jenkins工作目录的相对目录
'mvn -f litemall/pom.xml clean install'
2、部署脚本有两种实现方法,一种是直接用 Jenkins 的ssh插件,传输 jar 到远程服务器(上面脚本注释的部分),另外一种是在远程服务器上写好部署脚本,用 Jenkins 执行远程服务器上的部署脚本,按自己项目需求二选一。
远程服务器上的部署脚本如下。
#!/bin/bash
host='192.8.8.8'
name='booksmpil-all-5.1.0-exec.jar'
dir='booksmpil'
DT=`date +%Y%m%d%H%M`
if ps -ef|grep $name |grep -v "grep" &>/dev/null; then
java_pid=`ps -ef | grep $name | grep -v "grep" | awk '{print $2}'`
echo "kill -9 的pid:" $java_pid
kill -9 ${java_pid}
fi
echo '【开始暂停jar包】'
if ps -ef|grep $name |grep -v "grep" &>/dev/null; then
echo "Tomcat stop failed.Please check the problem."
exit 5
fi
cd /data/api
cmd='mv '$dir' bk/'$dir'_'$DT
echo $cmd
eval $cmd
echo '【项目备份完成】'
sleep 3
if [ ! -d booksmpil ]; then
mkdir $dir
fi
sleep 3
scp -rq root@$host:/data/jenkins/jenkins_home/workspace/api_pipeline_dev/booksmpil/booksmpil-all/target/$name /data/api/$dir
sleep 2
echo '【项目部署完成】'
sleep 2
cd /data/api/$dir
cp /data/api/confbk/appconifg-all.yml ./appconifg-core.yml
echo '【备份配置完成】'
source /etc/profile
nohup java -jar $name >/dev/null &
if ps -ef|grep $name |grep -v "grep" &>/dev/null; then
echo '【启动jar包】'
fi
NR=`ps -ef | grep "${name}" | grep -v grep | wc -l`
if [ "$NR" -eq 1 ]
then
echo '【启动成功】'
else
echo '【启动失败】'
fi
3、流水线脚本语法生成
Jenkins 自带流水线语法生成插件,入口项目配置-流水线-流水线语法
3.1Git拉取代码脚本生成
选中红框中的步骤,然后依次填写Git仓库的信息,点击 ‘生成流水线脚本’即可。
3.2执行 shell 脚本生成
选中红框中的步骤,然后写你要执行的 shell 脚本,点击生成即可。
3.3向远程服务器发布jar包脚本生成
依次填写远程服务器的配置、远程目录、源文件地址等信息后,点击生成。
还有很多流水线脚本生成语法,按需生成。
读后感
来这里找我交流
QQ群:330374464
公众号:软件测试资源站(ID:testpu)