三、部署(从创建任务开始)
再进行该步骤之前,请务必保证之前的jenkins安装已经相关的公共配置操作已经完成。
具体参考博客:jenkins安装配置实现自动化部署(Tomcat,jetty,maven,git)(一)
新建任务
输入任务名称,选择构建一个maven项目
配置Git
下面是Add Git账户的界面
Maven打包的配置
通过SSH发布,构建后操作,选择之前系统设置里面配置好的SSH服务器
source files:jenkins workspace的相对路径
remove prefix:去掉之前的路径前缀
remote directory:默认不填
exec command:不建议使用这个,这个不能识别环境变量,我们后面通过其他插件来实现远程执行命令的功能(也就是即将要介绍的excute scripts插件)
我们继续增加构建后步骤,构建后步骤有多个的话,可以通过鼠标拖住插件窗口实现顺序的变换
add post build step-》add build step-》选shell框,然后再图片中的命令输入窗口填写要执行的shell命令。
图中的changeMyProjectPatch_jenkins.sh要确保再构建之前手动上传到workspace下面,这样才能正常执行。
changeMyProjectPatch_jenkin.sh主要的内容就是换包然后启动jetty
#!/bin/bash
function log_echo(){
nowtime=`date --date='0 days ago' "+%Y-%m-%d %H:%M:%S"`
echo [$nowtime] $1 >> /home/guahao/.jenkins/logs/jenkinsRedeploy.log
}
port=$1
if [ -z "$port" ];then
log_echo "请输入端口"
exit
fi
log_echo "now JAVA_HOME="$JAVA_HOME
currentPath=`pwd`
baseDeployProjectPath=/home/guahao/runtime
##获取当前路径下的war包名称
warName=`find ./ -maxdepth 1 -name "*.war"|awk -F"/" '{print $2}'`
folderName=`echo $warName|awk -F"." '{print $1}'`
folderName=$folderName-$port
cd $baseDeployProjectPath
if [ ! -d $folderName ]; then
##如果不存在jetty服务器,就创建一个服务器,并启动程序
log_echo "当前文件夹"$folderName"不存在,将新建文件夹"
jettypackageName=`find ./ -maxdepth 1 -name "jetty*.tar.gz"`
log_echo "解压jetty安装包"
tar -zxvf $jettypackageName >/dev/null 2>&1
jettyFolderName=`find ./ -maxdepth 1 -name "jetty*"|grep -v tar.gz`
mv $jettyFolderName $folderName
sed -i "s/# jetty.http.port=8080/jetty.http.port=$port/g" $folderName/start.ini
log_echo "端口参数修改成功,新工程"$warName"端口号为:"$port
else
##如果存在jetty服务器,则进行杀进程,备份原始包,换包,重启进程操作
log_echo "当前文件夹"$folderName"已存在,将执行换包操作"
cd $folderName/webapps/
rm -fr *_backup
mv ROOT.war ROOT.war_backup
log_echo "原始包备份完成..."
ps -ef|grep $folderName|grep -v grep|awk -F" " '{print $2}'|xargs kill -9
log_echo “原始进程强制关闭...”
sleep 5
cd ../..
fi
mv $currentPath/$warName $folderName/webapps/ROOT.war
##启动程序
cd $folderName/bin
log_echo “重新启动程序...”
./jetty.sh start >> /home/guahao/.jenkins/logs/jenkinsRedeploy.log 2>&1 &
配置完了之后,我们点击立即构建,jenkins就会自动从git拉取代码并进行打包然后通过脚本部署啦!
注:上面最后的执行脚本,实在jenkins所部署的节点运行的,实际情况可能还会有jenkins和实际服务器分开的情况,构建后步骤参考以下配置: