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

GitLab Runner artifacts打包如何排除public父目录仅导出其下内容

解决方案

GitLab CI 的 artifacts 会默认保留文件相对于项目根目录的路径结构,仅调整 paths 配置无法去掉 public 父目录,需要配合构建步骤的文件操作实现需求,以下是两种可行配置方案:


方案1:直接移动文件到项目根目录

适合工作目录无同名文件冲突的场景:

your_job_name:
  # 保留原有job的其他配置(如image、tags等)
  script:
    # 保留原有全部构建脚本,在末尾添加以下命令
    # shopt -s dotglob 用于匹配public下的隐藏文件,不需要可以去掉
    - shopt -s dotglob && mv public/* ./
  artifacts:
    name: app
    paths:
      # 按需指定原public下需要打包的目录/文件即可
      - folder1/
      - folder2/
      - "*.txt"
      # 如果不确定public下的内容,也可以用全局匹配,配合exclude排除不需要的文件
      # - ./*
    # exclude:
    #  - .git/
    #  - .gitlab-ci.yml

方案2:自行打包生成压缩包

适合不想修改工作目录结构、避免文件冲突的场景:

your_job_name:
  # 保留原有job的其他配置
  script:
    # 保留原有全部构建脚本,在末尾添加以下命令
    # 进入public目录打包所有内容(包含隐藏文件),生成的压缩包放在项目根目录
    - cd public && tar -czf ../app.tar.gz * .[!.]*
  artifacts:
    name: app
    paths:
      # 直接把自行打包的压缩包作为产出
      - app.tar.gz

该方案下载 artifacts 后得到的 app.tar.gz 解压后直接就是原 public 目录下的所有内容,不会包含 public 父目录。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 00:15:06