3天学会Jenkins_13_自动部署项目到远程服务器
- 2019 年 12 月 23 日
- 筆記
转载注明出处,欢迎关注微信小程序
1 准备
- Gitlab相关插件安装,参考前面文章《Jenkins Github&Gitlab集成之安装Git插件》及 《gitlab or github代码提交后自动构建2》
- 安装
Publish over ssh
插件 Manage Jenkins
->Configure System
->Publish over SSH
配置SSH。- 可以只需配置密码或者是公钥,两者均可
- 服务器配置需要指定主机地址和主机登录用户名,远程拷贝目录
- 点击
Test Configuration
可以测试是否可以连接远端服务器成功
2 目标和原理
2.1 目标
当Gitlab提交了Tag时,触发自动编译、打包和自动远程部署
2.2 原理
通过在指定Gitlab项目上添加Jenkins的webhook,然后配置提交Tag时触发钩子。从而,Jenkins执行Jenkinsfile实现自动编译、打包和自动远程部署。
3 Jenkins项目创建及webhook配置
- 创建一个
Pipeline
项目 - 配置项目
Build Triggers
-> 勾选Build when a change is pushed to GitLab. GitLab webhook URL:......
- 这里可以点击
Advanced
,点击Generate
会生成Secret token,用于Gitlab hook配置用,当然可以不用这一步,那Gitlab上也不用配置了。
- Pipeline设置
- 选择
Pipeline script from SCM
- SCM方式选择
Git
,然后正确填写远程仓库地址和拉取代码方式 Branch Specifier
:${gitlabSourceBranch}
(所有分支)Script Path
可以设置指定的Jenkinfile文件名,默认为项目根目录Jenkinsfile
- 选择
- Gitlab项目
Settings
->Integrations
配置Jenkins webhook- 将第二步中的webhook链接拷贝到URL文本框中
- 添加成功后,点击Test,即可触发Tag Push Event。
注意:如果Jnekins主机IP发生改变,没有重启的话,那么钩子的IP地址还是旧地址,导致Gitlab无法发出钩子事件(Hook execution failed: execution expired) 添加webhook的话是需要有Gitlab项目master权限的,否则你也看不到Settings这个菜单选项。
4 项目编译打包及远程发布
上面的一系列操作,我们已经将Jenkins和Gitlab通过webhook连接起来了,接下来只需要实现Jenkinfile
文件的执行内容,即实现编译、打包及远程发布功能。其实就是写脚本。
部署形式可分为两种:
- 本地部署
- 直接编写本地部署脚本就好了。
- 远程部署
- 通过ssh或者ftp方式将编译打包的的软件包通过远程拷贝到目标服务器上,然后执行安装,典型的自动化执行实现方式就是借助
expect
命令,包括输入用户密码和通过跳转机登录到远端服务器上之类的操作。
- 通过ssh或者ftp方式将编译打包的的软件包通过远程拷贝到目标服务器上,然后执行安装,典型的自动化执行实现方式就是借助

5 参考文档
- https://github.com/jenkinsci/gitlab-plugin#defined-variables