5

@joki上一个问题的回答表明,可以通过为可浏览的工件提供公共 URL 来将 GitLab 存储库中的每个活动分支部署到动态环境。

mkdocs 材料项目尝试这个,我发现了两个问题。

首先,如果 GitLab 存储库位于组或子组中,则.gitlab-ci.yml文件中的 URL 需要更像这样:

    environment:
        name: review/$CI_COMMIT_REF_NAME
        url: "$CI_PAGES_URL/-/jobs/$CI_JOB_ID/artifacts/public/index.html"
        auto_stop_in: 1 week
    variables:
        PUBLIC_URL: "$CI_PAGES_URL/-/jobs/$CI_JOB_ID/artifacts/public/"

其次,站点内的相关链接不能很好地工作,导致大量的 404 错误,以及样式文件等内容的丢失。可能上面的 URL 不正确,或者可能需要更改为site_urlmkdocs.yml

site_url: !!python/object/apply:os.getenv ["CI_ENVIRONMENT_URL"]

但是,这些都不适合我。

可以在此处找到具有非常小的部署和审查应用程序的最小 MR 。

有没有人有 mkdocs 审查应用程序的工作配方?

4

1 回答 1

4

build您可以在管道中步骤的 »Browse« 按钮中看到所需的 URL 。

这行得通吗?

develop:
    artifacts:
        paths:
          - public

    environment:
        name: Develop
        url: "https://$CI_PROJECT_NAMESPACE.gitlab.io/-/snim2-test-subgroup/$CI_PROJECT_NAME/-/jobs/$CI_JOB_ID/artifacts/public/index.html"

    script: |
        # whatever

    stage: deploy

    variables:
        PUBLIC_URL: "/-/snim2-test-subgroup/$CI_PROJECT_NAME/-/jobs/$CI_JOB_ID/artifacts/public"

您还需要更改才能mkdocs.yml实际使用PUBLIC_URL,并确保在生成绝对内部链接的任何地方都使用它:

site_url: !!python/object/apply:os.getenv ["PUBLIC_URL"]
use_directory_urls: false
…
于 2020-03-08T08:22:41.633 回答