3

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

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

有没有可以访问这个变量的?

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

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

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

2 回答 2

3

我不认为这样的 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')

我认为他们的实现不会很快改变(因为向后兼容的影响)需要同步。如果您不想暴露于由其实现更改引起的副作用,您可以在任何地方使用您的计算值。

于 2020-09-05T23:21:05.193 回答
1

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

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

[
  {
    "key": "RUN_NIGHTLY_BUILD",
    "variable_type": "env_var",
    "value": "true"
  },
  {
    "key": "foo",
    "value": "bar"
  }
]
于 2022-03-03T07:04:08.610 回答