【问题标题】:Read webhook payload in Gitlab CI在 Gitlab CI 中读取 webhook 有效负载
【发布时间】: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=&lt;...&gt;&amp;variables[PRODUCT]=PROJECT_A。触发的项目有一个处理变量值的脚本。

标签: gitlab webhooks gitlab-ci git-webhooks


【解决方案1】:

如果您在 UI 中触发管道时运行 compgen -v 以显示环境变量(没有 JSON 有效负载),您的作业日志中的行数将比POST使用 JSON 有效负载时少 3 行。

附加变量是:

  • CI_BUILD_TRIGGERED
  • CI_PIPELINE_TRIGGERED
  • TRIGGER_PAYLOAD

如果您将它们的值打印出来并重新运行管道:

echo CI_BUILD_TRIGGERED=$CI_BUILD_TRIGGERED
echo CI_PIPELINE_TRIGGERED=$CI_PIPELINE_TRIGGERED
echo TRIGGER_PAYLOAD=$TRIGGER_PAYLOAD

你得到(对于用户名 YOUR_USER_NAME 和仓库名称 YOUR_REPO_NAME)

CI_BUILD_TRIGGERED=true
CI_PIPELINE_TRIGGERED=true
TRIGGER_PAYLOAD=/builds/YOUR_USER_NAME/YOUR_REPO_NAME.tmp/TRIGGER_PAYLOAD

如您所见,有效负载以TRIGGER_PAYLOAD 的形式存储在后缀为.tmp 的临时目录中,重新运行管道并将其打印出来 (cat) 表明它包含有效负载,在我的情况下是JSON。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-09-23
    • 2018-05-19
    • 2015-10-03
    • 1970-01-01
    • 2016-12-25
    相关资源
    最近更新 更多