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

GitLab CI get predefined variable with API?

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

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

有没有访问这个变量的方法?

编辑: 用例是我想在管道成功后查询 urls。 在流水线期间,生成了一个像这样的 url example.com/$_CI_COMMIT_REF_SLUG/

我需要来自 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])-*$$//g')

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

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

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

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