Jenkins配置pipeline选择分支发布

最近去了一家新的公司,公司发布方式比较原始,就是拖war包到服务器上面,这个我还能忍受、、问题是网速奇慢无比,于是决定自己弄一套jenkins玩玩.
由于项目是在gitlab上面,一个项目很多同事都需要发布,而且分支肯定是不一样的,这就需要支持用户选择自己的分支去发布。这篇文章就是介绍如何配置和支持选择分支发布的.
准备工作:

- 安装jenkins 这里面就不说了,网上教程很多。
- 安装git parmater的插件。

配置工作:

- 新建pipeline,选择参数化构建过程,这里面可以选择的功能很多。我们选择Git parmater 
- 流水线的定义中 我们选择pipeline script,在这个里面我们输入自定义的脚本,但是大致都是拉取代码,构建代码,和发布代码  

这里面我们举一个简单的例子,脚本如下:

pipeline {
agent any
parameters {
gitParameter branchFilter: 'origin/(.*)', defaultValue: 'develop', name: 'BRANCH', type: 'PT_BRANCH'
}
stages {
stage('Checkout') {
steps {
echo '开始拉取代码.....'
git branch: "${params.BRANCH}", credentialsId: '85205ecb-ef06-4dba-ad74-23983ea3de19', url: 'http://10.200.1.192/xxx/xxx.git'
}
}
stage('Build') {
steps {
echo '开始执行打包操作.......'
sh 'mvn clean package -U'
}
}

stage('Deploy') {
steps {
sh 'scp {项目路径}/target/{war或者jar} root@10.50.12.8:/opt/wars/{远程服务器的一个文件夹}'
sh 'ssh root@10.50.12.8 "sh /opt/wars/{远程服务器的一个文件夹}/deploy.sh" '
echo '测活成功'
}
}
}
}

其中deploy.sh的代码文件如下:


echo '开始备份war..........................'
appName={应用名}
bakPath={文件备份的路径}
appPath={应用程序路径}
cp -f ${appPath}/webapps/***.war ${bakPath}/bak/
sleep 3s
echo '正在停止服务................'
tomcat_id=`ps -ef | grep ${appName} | grep -v "grep" | awk '{print $2}'`
kill -9 $tomcat_id
sleep 1s
cp -f ${bakPath}/***.war ${appPath}/webapps
sleep 5s
export JAVA_HOME=/usr/local/jdk1.8.0_152
export JRE_HOME=/usr/local/jdk1.8.0_152/jre
sh ${appPath}/bin/startup.sh
tail -fn 0 --pid=`ps uxh|grep 'sed[[:space:]]\/startup'|awk '{print $2}'|sort -nr|head -1` ${appPath}/logs/catalina.out|sed /startup[[:space:]]in/Q
exit