美文网首页
gitlab+webhook自动触发jenkins

gitlab+webhook自动触发jenkins

作者: zi萱 | 来源:发表于2019-08-12 09:38 被阅读0次

某些分支push/merge代码后,可以自动触发单元测试、静态代码扫描等。提前预防问题,发现问题,提前解决。

1.下面实现一个场景,当开发将代码merge/push到一个多人协作的merge分支时,即可触发jenkins job执行,其他分支或操作不触发执行。
2.可以通过手动执行触发该jenkins job,且可以指定触发的分支。

Jenkins配置:

  1. 我们的jenkins job不使用匿名触发,我们可以通过user:token的方式来进行远程触发。
我的账户=》设置API Token,并记录生成的token。
image.png
  1. 添加jenkins插件Generic Webhook Trigger,以便来获取远程触发的参数,并进行过滤。
  2. 新建工程,勾选插件 image.png
  3. 设置Post content parameters,接受webhook触发时post参数,可以提取出想要使用的字段,可将content全部打印出来,提取想要的字段。这里我把分支名称提出来,起了个名字叫ref,可直接通过$ref来引用。 image.png
  4. 设置一个本工程唯一的token,将此token跟随在hookurl后面,这样只有带该token参数的请求才可触发本工程。 image.png
  5. 可以设置过滤器,如下图,将提取出来的分支名称进行正则匹配,匹配成功可以触发jenkins,不成功无法触发。为避免频繁触发,一定要设置过滤。
此处,将过滤分支名,在开发建立分支规范的时候,可设置固定格式的merge分支,这样只有merge分支才能触发本工程。
image.png
  1. 手动执行本工程,或者通过其他工程触发本工程,需要增加参数,可以在本工程设置参数化执行,比如指定分支,可将分支参数设置为ref,跟远程调用POST参数中提取出来的定义名一样即可,在后续shell等操作中使用,不冲突。

gitlab配置:

  1. 首先获取到某git工程的admin权限
  2. 点击settings=》hooks
  3. 配置Post-Receive WebHooks,设置hookurl为
    [http://user:api_token@server/generic-webhook-trigger/invoke?token=testwebhooktoken]即可,在push和merge时均可触发jenkins。
你成功了吗?只有通过invoke调用的时候,才可以通过generic插件提取数据出来哦~

相关文章

网友评论

      本文标题:gitlab+webhook自动触发jenkins

      本文链接:https://www.haomeiwen.com/subject/nsmhjctx.html