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"
}
]
我在我的 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"
}
]