之前部署了 Gitlab 的代码托管平台和 Jenkins 的代码发布平台。通常是开发后的代码先推到 Gitlab 上管理,然后在 Jenkins 里通过脚本构建代码发布。这种方式每次在发版的时候,需要人工去执行 Jenkins 上的构建动作,有时显得过于繁琐。于是就想到了 Gitlab 的 Webhook 功能,通过 Webhook 的相关设置,可以实现代码 Push 后,自动去触发 Jenkins 上的构建动作,这样就不需要人工干预去执行发版操作了。设置如下:

1. Jenkins 上的操作


通常,Jenkins 在项目配置时是可以配置远程构建触发器,设置好 Jenkins 的回调 url 后就可以让 Jenkins 进行自动构建。这就需要先下载 Gitlab Hook Plugin 插件。登陆 Jenkins,分别点击”系统管理”->”插件管理”->”可选插件”,选择 Gitlab Hook Plugin

jenkins 自动git_人工干预

然后构建相应的项目工程,比如下面的 test-wx(下面最关键的是第2步中查看url,然后用这个 url 回调地址去 Gitlab 的 webhook 上添加)


a)先设置代码的git下载路径,这里通过ssh方式(需要提前将Jenkins本机的key添加到Gitlab上)

jenkins 自动git_gitlab 自动推送代码到gitee_02


b)查看 Jenkins 生成回调地址。在任务重构建触发器下获取回调 URL。下面的 URL 那一行只有Gitlab Hook Plugin插件下载成功后才能显示。

jenkins 自动git_人工干预_03

c)然后设置代码发布的推送脚本

jenkins 自动git_gitlab 自动推送代码到gitee_04

2 Gitlab 上的操作

登陆 Gitlab 上的 testwx3 项目中,添加 webhook(用上面Jenkins中生成的回调url)

然后点击这个项目的”Settings”

jenkins 自动git_触发器_05

jenkins 自动git_Jenkins_06

添加成功后,点击此 webhook 后面的 test 进行测试

jenkins 自动git_人工干预_07


如果返回Hook successfully executed.表示配置成功。 这样,下次 push 代码后,就会自动触发 Jenkins 上相关的构建工程进行自动发布了!无需人工干预~

jenkins 自动git_gitlab 自动推送代码到gitee_08


如上设置后,比如在 gitlab 的 testwx3 项目代码库中 push 一个 test.txt 文件,然后测试下是否自动发布了。

jenkins 自动git_Jenkins_09

然后去 Jenkins 上查看,如下发现已经自动发布了!

jenkins 自动git_人工干预_10

最后去目标机器192.168.1.19的/tmp/testwx目录下发现test.txt文件已经发布过来了~

jenkins 自动git_人工干预_11