从Jenkins的gitlab webhook中读取json有效负载

Ind*_*eet 2 jenkins gitlab

我按照本教程设置了一个Jenkins作业,只要对gitlab存储库进行推送就会运行.我测试了webhook,我可以看到工作被触发了.但是,我没有在有效载荷中看到任何内容.

只是想知道,如果有人试图读取从gitlab webhook收到的有效载荷?

Ins*_*der 8

只要Gitlab仓库中发生任何事件,Jenkins Gitlab插件就会将这些POST参数发送给Jenkins.

您可以添加envJenkins控制台以获取所有Gitlab参数导出到Jenkins环境的内容.然后您可以打印或使用所需的变量.

例如

echo $gitlabSourceRepoURL
echo $gitlabAfter
echo $gitlabTargetBranch
echo $gitlabSourceRepoHttpUrl
echo $gitlabMergeRequestLastCommit
echo $gitlabSourceRepoSshUrl
echo $gitlabSourceRepoHomepage
echo $gitlabBranch
echo $gitlabSourceBranch
echo $gitlabUserEmail
echo $gitlabBefore
echo $gitlabSourceRepoName
echo $gitlabSourceNamespace
echo $gitlabUserName
Run Code Online (Sandbox Code Playgroud)


小智 0

我做到了。它适用于某些场景。

如果您使用 /gitlab/buildnow,则可以访问有效负载对象。他们全部。但您必须在“此构建已参数化”下命名它们。然后您可以通过名称访问它们,例如 ${AUTHOR_NAME}。

文档: https: //github.com/elvanja/jenkins-gitlab-hook-plugin#parameterized-projects

但请注意,如果您使用 /gitlab/notifycommit,它将不起作用,因为触发 jenkins 和实际开始工作之间存在间隙(轮询)。在这种情况下,所有有效负载数据都是空的。

但要小心使用 /gitlab/buildnow,因为你无法控制是否要构建,就像当 Maven 提交回一些文件时,构建不应该被触发。

我所做的是用 Python 编写一个小工具来接收所有 gitlab 通知,并且该工具与 GitLab 和 Jenkins 进行对话,以触发(或不触发)作业,并收集状态。

我的起点: 如何在 Python 中接收 Github Webhooks(最后一个答案,而不是选择的答案)。

我两天前开始开发它。已经完成了,但我仍在验证它。