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

一、整体流程

![]( https://s1.51cto.com/images/blog/201906/28/2e524e6e0f06b4c45c369060f44bb444.png?x-oss-process=image/watermark ,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=)

二、Jenkins 配置

2.1、首先安装插件

  • Gitlab Hook Plugin
  • GitLab Plugin
  • Publish Over SSH

2.2、配置目标服务器

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

![]( https://s1.51cto.com/images/blog/201906/28/26c6b23bb3eceed710980883d0517308.png?x-oss-process=image/watermark ,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=)

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

![]( https://s1.51cto.com/images/blog/201906/28/d42771a76dd8187ef57d4ad182fac398.png?x-oss-process=image/watermark ,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=)

2.3、创建 job

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

![]( https://s1.51cto.com/images/blog/201906/28/2f8741ce0abee817c96592f4f673969c.png?x-oss-process=image/watermark ,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=)

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

![]( https://s1.51cto.com/images/blog/201906/28/81105b932e844c754ef40459caa1246e.png?x-oss-process=image/watermark ,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=)

填写构建内容。

![]( https://s1.51cto.com/images/blog/201906/28/bfa7163c97bdbc4e8c2dc76809d15e3b.png?x-oss-process=image/watermark ,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=)

2.4、配置 gitlab 触发

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

http://<username>:<api-token>@<jenkins-server>/

首先去生成 token。

![]( https://s1.51cto.com/images/blog/201906/28/aa7c3e0fe4795b3884628c4a155e20fa.png?x-oss-process=image/watermark ,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=)

然后我的触发URL如下:

http://user:11016e608eae8623253ec9113ca8e345b3@jenkins.xxxxxx.net/jenkins/project/banana.xxxxxx.net

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

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

![]( https://s1.51cto.com/images/blog/201906/28/00977508c6b5c426e1a141a121bc9cac.png?x-oss-process=image/watermark ,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=)

![]( https://s1.51cto.com/images/blog/201906/28/74fe69ea0e4c29e69d351cb072dcb262.png?x-oss-process=image/watermark ,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=)

三、改进

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

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

![]( https://s1.51cto.com/images/blog/201906/28/ea4ea04ca147a677fad8ae9649d0d011.png?x-oss-process=image/watermark ,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=)

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

git config --global credential.helper store
posted @ 2019-07-15 13:54  小水滴18  阅读(1300)  评论(0)    收藏  举报