使用Jenkins远程到目标服务器自动部署后端backend程序
目标:通过一台专用的发布服务器,去git服务器拉指定分支(eg:test分支/prod分支)的代码,编译并且远程部署到目标服务器,重启web容器,达到发布代码自动化的效果。
1、在“发布服务器”部署好Jenkins,下载地址:
1 2 3 |
http://mirrors.jenkins.io/war-stable/latest/jenkins.war |
2、“发布服务器”与“git服务器”的免密登录:
可以根据我的另一篇文章来设置:ssh免密登录Linux服务器,GitLab公钥免密管理Git源码
附:
coding.net教程:https://dev.tencent.com/help/doc/faq/bbe781aee786/ssh
gitlab.com教程:https://gitlab.com/help/ssh/README#generating-a-new-ssh-key-pair
3、“发布服务器”与“目标服务器”免密登录:
可以根据我的另一篇文章来设置:ssh免密登录Linux服务器,GitLab公钥免密管理Git源码
4、Jenkins创建项目、拉取指定分支,autoconfig编译,执行发布脚本
第一步:在Jenkins创建一个maven项目(如果没有maven请安装Maven Integration插件):

第二步:填写源码信息,项目git地址,分支名称。(如果没有git请安装Git Parameter插件):

第三步:输入maven编译打包命令,一般采用clean package既可。由于我们项目用了阿里的AutoConfig,选择prod.properties配置文件进行生产环境打包。

第四步:将“publish_backend_remote_v1.2.sh”脚本上传到服务器,我的路径参考:/tool/shellscript/publish_backend_remote_v1.2.sh
备:脚本在我的Github:publish_backend_remote.sh,记得赋予sh文件执行权限。
由于“jenkins服务器”和“项目生产服务器”不是同一台服务器,所以发布脚本有一点复杂,不用担心,已经为大家写好注释了。
备注:其实有个Jenkins插件叫“Publish Over SSH”,可以简化刚才提到的shell脚本,也许我是个old school程序员,还是喜欢自己写shell把控发布逻辑。
第五部:打包之后执行一段shell脚本进行发布(关键发布逻辑在shell文件中):

5、测试发布:
保存后回到Jenkins项目页面,点击立即构建就会开始打包发布项目了,如果报错了,可以点击Build History看每一次发布的命令行终端输出的信息:
