GitLab CI/CD 从页面公共文件夹中删除旧工件

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

我正在尝试将静态网站的多个版本部署到 GitLab CI/CD 中的

public
的 GitLab 页面。

我的策略是在路径中包含标签或分支名称,例如

  • pages.foo.com/project/main/site.html
    (分行)
  • pages.foo.com/project/latest/site.html
    (标签)
  • pages.foo.com/project/v42.1/site.html
    (标签)

所以我给自己定义了一个变量

DEPLOY_DIR
,它可以设置为
$CI_COMMIT_TAG
$CI_COMMIT_BRANCH
,使用 CI/CD 的
rules
if
结合使用。

变量本身工作正常,并且站点被复制到正确的目的地。

但是,GitLab 页面似乎只保留“最新”构建管道的结果。尽管“网络服务器”页面上的目标文件夹彼此完全不同,但先前管道产生的工件已完全“消失”。 所以,例如:

提交并推送到

分支

    main
  1. => 成功构建管道 文物被复制到
    public/main/site.html
  2. 网站
    pages.foo.com/project/main/site.html
    工作正常
  3. 标签
  4. v42.1
  5. 已创建 => 管道构建成功 文物被复制到
    public/v42.1/site.html
  6. 网站
    pages.foo.com/project/v42.1/site.html
    工作正常
  7. 网站
    pages.foo.com/project/main/site.html
  8. 消失
  9. (404)
    
    这是我的.gitlab-ci.yml

stages: - build-pdf - deploy-html default: tags: - small build-pdf-doctoolchain: stage: build-pdf artifacts: paths: - build/pdf/*.pdf - build/html5/*.html image: doctoolchain/doctoolchain:v3.2.2 script: - doctoolchain . generatePDF generateHTML pages: stage: deploy-html variables: DEPLOY_DIR: "default" rules: - if: $CI_COMMIT_TAG != null variables: DEPLOY_DIR: $CI_COMMIT_TAG - if: $CI_COMMIT_BRANCH != null variables: DEPLOY_DIR: $CI_COMMIT_BRANCH script: - export - echo "deploy dir $DEPLOY_DIR" - mkdir -p "public/$DEPLOY_DIR" - cp -v build/html5/*.html "public/$DEPLOY_DIR" artifacts: name: "$CI_PIPELINE_ID" expire_in: never paths: - public

如你所见,我已经尝试过使用

artifacts.name
artifacts.expire_in

,但似乎都没有任何效果。

    
在 GitLab.com 免费套餐中,每个 GitLab 项目只能拥有一个页面站点。您上传到工件中公共文件夹的任何内容都将覆盖以前存在的内容,因此您会遇到此行为。

gitlab continuous-integration gitlab-ci gitlab-ci-runner
3个回答
0
投票

级别:高级、终极产品:SaaS、自我管理状态:实验

请在

此处

阅读全文。

如果您使用托管的 GitLab(在 GitLab.com 上),则免费版本中未启用此功能(

multiple deployments

0
投票

参考:

在自我管理的 GitLab 上,默认情况下此功能不可用。为了使其可用,管理员可以启用名为pages_multiple_versions_setting 的功能标志。在 GitLab.com 上,此功能不可用。此功能尚未准备好用于生产使用。

选择左侧项目菜单上的

Deploy

->
Feature flags

设置pages_multiple_versions_setting功能标志:

然后您应该在 pages.path_prefix 文件中的

.gitlab-ci.yml

范围内配置路径前缀。您可以在

此 GitHub 页面 
上找到示例和详细信息 在您的情况下,您应该使用以下部分扩展您的
pages
部分: pages: path_prefix: "$DEPLOY_DIR"
注:

此功能尚未准备好投入生产。您可以关注此票证中的功能状态:

https://gitlab.com/gitlab-org/gitlab/-/issues/422145

  • 如果您使用自托管的 GitLab,您可以启用该功能标志 -
pages_multiple_versions_setting

0
投票

详细帮助 -

https://docs.gitlab.com/ee/user/project/pages/

但是,如果您在 gitlab.com 上,您将看不到此功能。

或者,如果文件名被覆盖,您可以在 .yaml 中使用此 

hotfix

来使用时间戳保存文件。

export LATESTBUID=$(date +%d-%m-%y-%H-%M-%s) && mkdir -r /tmp/$LATESTBUID && <copy/create your build at this path> /tmp/$LATESTBUID

Note :
您也可以使用附加环境名称来获取更多描述


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