You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何配置GitLab流水线生成不带子文件夹的Artifacts压缩包

解决方案

场景1:仅需要生成普通产物,不需要部署GitLab Pages

你的原始配置用了pages作为作业名,这是GitLab Pages的专属作业名,要求必须输出public目录。如果不需要部署Pages,修改作业名并调整文件存放路径即可:

build_artifacts:
  stage: deploy
  script:
    - mkdir .tmp
    - cp -r * .tmp
    # 把所有待发布文件直接移到CI工作根目录,不套外层文件夹
    - mv .tmp/* .
    # 如果需要保留隐藏文件,再加下面这条
    - mv .tmp/.* . 2>/dev/null || true
    - rm -rf .tmp
  artifacts:
    paths:
      # 匹配根目录下所有非隐藏文件
      - "./*"
      # 如果需要包含隐藏文件,取消注释下面这条
      # - "./.*"
    exclude:
      # 排除不需要的冗余文件,可根据实际需求调整
      - ".git/"
      - ".gitlab-ci.yml"

场景2:同时需要部署GitLab Pages和符合要求的产物

GitLab Pages强制要求作业输出public目录,这种情况下可以额外自行打包一个符合结构要求的压缩包作为产物:

pages:
  stage: deploy
  script:
    - mkdir .public
    - cp -r * .public
    - mv .public public
    # 自行打包无外层目录的压缩包
    - cd public
    - zip -r ../output.zip ./*
    # 如果需要包含隐藏文件,把上面的命令替换成下面这条
    # - zip -r ../output.zip ./* ./.*
    - cd ..
  artifacts:
    paths:
      - public # 保留给Pages部署使用
      - output.zip # 解压后直接是所有根目录文件

原配置问题说明

GitLab CI打包产物时,会把artifacts.paths中指定的目录本身作为顶层目录放入压缩包,没有内置参数可以跳过该外层目录,因此需要通过调整文件存放路径或者预打包的方式满足需求。

内容的提问来源于stack exchange,提问作者jack rk

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.09 17:36:01