GitLab CI 使用 API 获取预定义变量?



我在我的 gitlab ci 管道中使用预定义的变量,例如$CI_COMMIT_REF_SLUG,通过 gitlab API 访问这些变量将非常有用。

我已经通读了文档并浏览了所有与 gitlab-ci 相关的 GET 路由(分支/、作业/、管道/(,但只能找到每个作业和管道的原始分支名称/标签。

是否有任何访问此变量?

编辑: 用例是我想在成功的管道后查询 url。 在管道期间,example.com/$_CI_COMMIT_REF_SLUG/生成这样的 url

。我需要来自 API 的这样的响应:

{
"ref_slug":"foo-12",
"ref":"-/foo_12-"
}

我认为这样的API不存在。

但是,您可以并行使用自己的局部变量,根据它们的函数计算:https://gitlab.com/gitlab-org/gitlab-runner/-/blob/main/Makefile.build.mk#L25

BRANCH=$(git branch --show-current)
CI_COMMIT_REF_SLUG=$(echo $BRANCH | cut -c -63 | sed -E 's/[^a-z0-9-]+/-/g' | sed -E 's/^-*([a-z0-9-]+[a-z0-9])-*$$/1/g')

我认为它们的实现不会很快改变(因为向后兼容性影响(需要您进行同步。 如果您不想受到其实现更改引起的副作用,则可以在任何地方使用计算值。

我有类似的要求,谷歌搜索把我带到了这里。不幸的是,接受的答案说不。然后我在 gitlab ci 文档中发现了一些有用的东西,我认为这就是我想要的。

GET /projects/:id/pipelines/:pipeline_id/variables

[
{
"key": "RUN_NIGHTLY_BUILD",
"variable_type": "env_var",
"value": "true"
},
{
"key": "foo",
"value": "bar"
}
]

更新

/projects/:id/variables获取 CI/CI 变量设置中的预定义变量,而/projects/:id/pipelines/:pipeline_id/variables获取触发管道时手动输入的变量。

最新更新