最近研究了一下jenkins发布,通过服务器A向服务器B发布应用,网上一堆的教程,有参考价值,但是坑很多,很多细节描述不清,所以从坑里爬出来后,决定整理下这个过程。
1. 环境准备
系统:centos7.6,本地虚拟机2台
host1: 作为发布服务器,安装jenkins、git、maven、jdk8等基础环境
host2: 作为应用部署服务器,安装jdk8等环境
Jenkins-plugins: github、publish over ssh、Maven Integration plugin等
jenkins安装网上教程比较详细,不再赘述
2. 配置jenkins
2.1. Global Tool Configuration
配置maven/jdk/git
2.2. system config
这里主要配置github账号和publish over ssh
github配置凭证,这里使用了账号密码的方式
publish over ssh:
- 名称,随便起,方便自己区分就
- 被发布的远程服务器ip
- 服务器用户名
- jenkins构建完项目后,会将jar包拷贝到远程服务器的这个目录下
- 勾选后输入远程服务器用户的登录密码
3. 配置job
创建自由风格的projects
Post-build Actions需要注意路径的配置细节
- 选择前面配置的ssh
- Source files: jenkins的服务器,对应jenkins/workspace/ 下构建的工程文件夹,我这里构建后的路径是
/root/.jenkins/workspace/lottery-svc/lottery-svc/target/lottery-svc.jar,所以此处配置为lottery-svc/target/*.jar - 步骤2的配置前缀
- 远程被发布的服务器,publish over ssh配置步骤下的/home/jenkins/data中会创建一个lottery-svc目录,用来保存从jenkins服务器构建好的jar包
- 执行脚本,工程运行脚本,jar包放到自定义目录,并通过脚本启动
启动shell脚本:
#!/bin/bash
source /etc/profile
jar_name=lottery-svc.jar
cd /home/webapps/lottery-svc
ps -ef | grep $jar_name | grep -v grep | awk '{print $2}' | xargs kill -9
echo "关闭旧服务"
nohup java -jar $jar_name > nohup.log 2>&1 &
echo "启动脚本执行完毕!!"发布后可以到目标服务器对应目录下查看日志,确认工程是否启动成功