如何无需Shell处理构建GitLab CI制品的Web访问URL?
GitLab CI 制品URL构建方案
你需要构建的目标URL格式为:
http://topgroup.pages.example.org/-/gr1/gr2/myproject/-/jobs/123456/artifacts/...[artifact path]...
目前GitLab CI的原生变量中,没有直接提供排除根命名空间(topgroup)后的项目路径变量,所以完全不借助Shell处理的话,暂时没有简洁的原生构建方法。
以下是两种可行的替代方案:
1. 少量Shell处理的简洁方案(推荐)
利用Shell参数扩展去除CI_PROJECT_PATH中的根命名空间前缀,无需额外脚本:
${CI_SERVER_PROTOCOL}://${CI_PROJECT_ROOT_NAMESPACE}.${CI_PAGES_DOMAIN}/-/${CI_PROJECT_PATH#${CI_PROJECT_ROOT_NAMESPACE}/}/-/jobs/${CI_JOB_ID}/artifacts/${ARTIFACT_PATH}
解释:${CI_PROJECT_PATH#${CI_PROJECT_ROOT_NAMESPACE}/}会从CI_PROJECT_PATH(topgroup/gr1/gr2/myproject)中自动移除开头的topgroup/,得到你需要的gr1/gr2/myproject部分。
2. 纯原生变量组合(仅适用于固定子组结构)
如果你的项目子组结构完全固定(比如所有项目都遵循topgroup/gr1/gr2/项目名的格式),可以手动拼接变量:
${CI_SERVER_PROTOCOL}://${CI_PROJECT_ROOT_NAMESPACE}.${CI_PAGES_DOMAIN}/-/gr1/gr2/${CI_PROJECT_NAME}/-/jobs/${CI_JOB_ID}/artifacts/${ARTIFACT_PATH}
注意:这种方法灵活性极差,子组结构变化后需要手动修改配置。
内容的提问来源于stack exchange,提问作者exa
相关产品推荐
相关产品推荐

