我们在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
。
我还不确定原因:(。
答案 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。