我有一个通过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>
我通过其他项目(包括PROJECT_B
)中的webhook调用此触发器。
因此,我在相应的Webhooks中手动填写了所需的值,例如为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?