【发布时间】:2019-06-22 11:55:46
【问题描述】:
我有一个通过 webhook 触发的项目 (PROJECT_A),并希望设置变量 $PRODUCT。它的值用于触发构建中的某个路径。 .gitlab-ci.yml 文件中的作业如下所示:
deploy:
stage: publish
script:
- ./generate_doc.sh $PRODUCT
webhook 调用如下所示:
http://<GITLAB_URL>/api/v4/projects/710/ref/master/trigger/pipeline?token=<TOKEN>&variables[PRODUCT]=<PRODUCT>
我通过来自其他项目的 webhook 调用此触发器,包括 PROJECT_B。
所以我在各自的 webhook 中手动填写了所需的值,例如对于PROJECT_B:
http://<GITLAB_URL>/api/v4/projects/710/ref/master/trigger/pipeline?token=<TOKEN>&variables[PRODUCT]=PROJECT_B
当PROJECT_A 中的管道被触发时,$PRODUCT 的值为PROJECT_B,正如预期的那样。
我想进一步参数化管道,并考虑到提交消息等。我需要的所有信息显然都在webhook payload 中提供。
是否有一种内置方法可以在 pipeline 中读取此有效负载?或者,将有效负载的内容放入 webhook 中的变量中,如下所示:
http://<GITLAB_URL>/api/v4/projects/710/ref/master/trigger/pipeline?token=<TOKEN>&variables[COMMIT_REF]=???
我发现 discussions 关于使用 webhook 有效负载执行 parameterized Jenkins builds,包括 this related question。还有一个similar question in the Gitlab forum,没有任何答案。
有没有办法在 Gitlab CI 管道中访问该有效负载?我可能可以通过jq 调用来提取提供的值,但是我如何才能首先获得 Json?
【问题讨论】:
-
解决这个问题成功了吗?
-
不,我无法进一步参数化。这些变量现在在 Webhook 调用中得到修复,例如
http://.../ref/master/trigger/pipeline?token=<...>&variables[PRODUCT]=PROJECT_A。触发的项目有一个处理变量值的脚本。
标签: gitlab webhooks gitlab-ci git-webhooks