重建工件的 GitLab CI URL 路径

问题描述 投票:0回答:1

我正在尝试构建一个 CI 变量,其 URL 指向对 GitLab CI 工件的 Web 访问;为了将该变量用于环境(MR 预览)。简而言之,对于组

topgroup
、子组
gr1/gr2
、项目名称
myproject
和部署在域
pages.example.org
的 gitlab 页面中的项目,我希望我的变量包含如下 URL:

http://topgroup.pages.example.org/-/gr1/gr2/myproject/-/jobs/123456/artifacts/...[artifact path]...

有问题的部分是两个

/-/
部分之间的部分,其余部分要么是静态的,要么可以使用
CI_JOB_ID
CI_PROJECT_ROOT_NAMESPACE
构造。中间部分似乎不可能从当前可用的 CI 变量重建(至少在不将它们带到 shell 并插入和取出某些部分的情况下)。我得到的最接近的是:

  • CI_PAGES_URL
    几乎就在那里,它给出了整个
    http://topgroup.pages.example.org/gr1/gr2/myproject
    ,不幸的是,没有工件所需的
    /-/
  • 构建:
    $CI_SERVER_PROTOCOL://$CI_PROJECT_ROOT_NAMESPACE.$CI_PAGES_DOMAIN/-/$CI_PROJECT_PATH/-/jobs/$CI_JOB_ID/artifacts/...
    几乎就在那里,但不幸的是在
    topgroup
    中包含了
    CI_PROJECT_PATH
    ,给出了
    http://topgroup.pages.example.org/-/topgroup/gr1/gr2/myproject/-/jobs/123456/artifacts/...

有没有办法使用简单的方法干净地构造这个 URL,而不需要在 shell 中构建它并重新导出到 gitlab 变量?

gitlab continuous-integration gitlab-ci gitlab-ci.yml
1个回答
0
投票

它可以使用预定义变量的混合生成(但也取决于您的 GitLab Pages 设置):

如果您想要特定存储库的页面 URL,您可以使用以下模式:

${CI_PAGES_URL}/-/jobs/${CI_JOB_ID}/artifacts/my-file.txt

在我的例子中,导致 404 的原因是我从作业管道中提取的工件链接正在使用根组页面 url。适用于我正在使用的 GitLab 设置的示例:

https://${CI_PROJECT_ROOT_NAMESPACE}.${CI_PAGES_DOMAIN}/-/child-group/${CI_PROJECT_NAME}/-/jobs/${CI_JOB_ID}/artifacts/<ARTIFACT_PATH_OR_NAME>

假设您的存储库具有以下结构:
“根组”->“子组”->“我的存储库”并想要上传“my-file.txt”

上面的示例结果如下:

https://root-group.pages.my-gitlab.com/-/child-group/my-repository/-/jobs/00000/artifacts/my-file.txt

对于

child-group/${CI_PROJECT_NAME}
也许可以使用
$CI_PROJECT_PATH
来代替,但包括根组。

https://docs.gitlab.com/ee/ci/variables/predefined_variables.html
https://docs.gitlab.com/ee/user/project/pages/getting_started_part_one.html(页面网址的不同结构)

© www.soinside.com 2019 - 2024. All rights reserved.