Gitlab 9.5构建触发器无法按预期工作

时间:2017-08-30 18:01:51

标签: gitlab gitlab-ci

我们在Gitlab EE 9.5.0-ee 36112e7

我对Build Triggers有疑问。我有一个设置,每周通过Jenkins使用curl触发器触发构建。此作业通常会在API下显示标签Pipelines,当我点击它时,我可以看到右栏中的任何变量。

然而,在最近的Gitlab版本中,这种情况不再发生了。任何此类触发的工作都没有像以前一样被标记,我也没有看到变量。因此,以下逻辑,例如,永远不会触发(因为CI_PIPELINE_TRIGGERED未设置而激发):

  script:
- |
  if [ "$CI_PIPELINE_TRIGGERED" = "true" ]; then
    if [ "$BUILD_TRIGGERED_BY" != "Jenkins" ]; then
      echo "This build does not seem to be triggered by Jenkins. Skipping..."
      exit 0;
    fi;
  fi;

知道为什么吗?

而且,这是我在Jenkins中使用的curl触发器:

curl -kf -X POST \
     -F token="$TOKEN" \
     -F ref="master" \
     -F "variables[BUILD_TRIGGERED_BY]=Jenkins" \
     -F "variables[DATE]=$(date +'%Y%m%d')" \
      "https://gitlab.host.com/api/v4/projects/<id>/trigger/pipeline"

上面的TOKEN是来自该项目/settings/ci_cd页面的触发器令牌。

基本上,即使上面的命令启动了新的构建,它也不会被视为触发的构建。我甚至重新生成了一个与Jenkins脚本一起使用的令牌,但这也没有帮助。

之前完全相同的设置。

修改1:

因此,我更新了CI中的script以在触发时回显这些变量,即使$BUILD_TRIGGERED_BY变量显示为预期值,它也是{{1}变量是空的,导致我的逻辑动摇。这可能解释了为什么构建在管道视图中没有标记为$CI_PIPELINE_TRIGGERED

我还不确定原因:(。

2 个答案:

答案 0 :(得分:1)

很抱歉给您带来不便。这个错误发生在9.5中,因为我们更改了存储触发变量的位置以获得更好的架构我们已经解决了这个问题,补丁将进入10.0。

我们还考虑用于修复此回归的下一个补丁版本(9.5.x)。对于用户,不要立即升级到10.0。

以下是CE存储库中的问题跟踪器; https://gitlab.com/gitlab-org/gitlab-ce/issues/37559

答案 1 :(得分:0)

我也遇到了触发器的一些意外行为。 尝试使用form-urlencoding而不是multipart-form:

curl -vk \
-H "Content-Type: application/x-www-form-urlencoded" \
-d "token=$TOKEN&ref=master&variables[BUILD_TRIGGERED_BY]=Jenkins7&variables[DATE]=$(date +'%Y%m%d')" \
https://gitlab.host.com/api/v4/projects/<id>/trigger/pipeline

我使用GitLab Community Edition 9.3.9,然后变量再次出现。 但是,这仍然没有标记使用'API'运行的管道 - 这似乎只适用于legacy triggers