一、整体流程

持续集成 Jenkins +Gitlab + SSH 自动发布 HTML 代码_第1张图片

二、Jenkins 配置

2.1、首先安装插件

  • Gitlab Hook Plugin
  • GitLab Plugin
  • Publish Over SSH

2.2、配置目标服务器

系统管理 ---> 系统设置 ---> Publish over SSH

持续集成 Jenkins +Gitlab + SSH 自动发布 HTML 代码_第2张图片

如果不想使用密钥认证登陆,也可以使用 账户密码登陆。

持续集成 Jenkins +Gitlab + SSH 自动发布 HTML 代码_第3张图片

2.3、创建 job

我们创建一个自由风格的 job,配置好 git 源,这里也可以配置无密钥登陆,我这里使用账户密码。

创建触发器,用于自动构建,我们需要把其中的 url 添加到我们的 gitlab 上面,提交代码,可以触发构建,稍后演示。

持续集成 Jenkins +Gitlab + SSH 自动发布 HTML 代码_第4张图片

填写构建内容。

持续集成 Jenkins +Gitlab + SSH 自动发布 HTML 代码_第5张图片

2.4、配置 gitlab 触发

gitlab 的 webhooks url 是根据 jenkins 构建权限连接设置的,如果必须登录才能构建就必须获取 jenkins 的用户名及token,可以在jenkins用户--->设置里面查看到 ,url格式:

http://:@/

首先去生成 token。

持续集成 Jenkins +Gitlab + SSH 自动发布 HTML 代码_第6张图片

然后我的触发URL如下:

http://user:[email protected]/jenkins/project/banana.xxxxxx.net

最后测试一下,看看是不是正确。

如果没有添加用户信息认证,可能会报下面的错误:

持续集成 Jenkins +Gitlab + SSH 自动发布 HTML 代码

持续集成 Jenkins +Gitlab + SSH 自动发布 HTML 代码_第7张图片

三、改进

既然我们是纯静态的文件,不需要构建,为啥不直接传递命令,在服务器上面 git 的呢,这样速度更快,之前还需要把代码从源仓库拉下来,然后整个传到相应的目录下面,过程比较慢。

我们调整 Job 去掉源,然后把构建项目修改为如下:

持续集成 Jenkins +Gitlab + SSH 自动发布 HTML 代码_第8张图片

如果大家使用 http 协议的 git 拉取代码,会每次让输入账号密码,我们可以使用下面命令对认证信息进行保存:

git config --global credential.helper store