GitLab CI/CD 流水线执行完成后如何清理工作目录?
GitLab CI/CD 工作目录自动清理方案
GitLab CI 原生提供了对应的配置项,不需要手动编写带排除规则的rm命令:
1. 任务运行前清理:GIT_CLEAN_FLAGS变量
GitLab Runner默认会在每次任务启动前执行git clean清理工作目录的冗余文件,你可以通过GIT_CLEAN_FLAGS变量自定义清理规则,直接排除需要保留的artifacts文件即可:
# 全局生效,写在.gitlab-ci.yml顶部 variables: # 含义:清理所有未跟踪的文件/目录,排除artifacts对应的路径(示例中artifacts存放在dist目录) GIT_CLEAN_FLAGS: -ffdx --exclude=dist/
你也可以把变量写在单个job下,只对特定任务生效。
2. 任务结束后清理:after_script字段
artifacts的上传逻辑是在script阶段执行完成后、after_script阶段执行前触发的,所以你可以把清理逻辑放在after_script中,完全不需要手动排除artifacts文件,不用担心影响artifacts上传:
your_build_job: script: # 你的正常构建逻辑 - npm run build artifacts: paths: - dist/ after_script: # artifacts已经上传完成,直接清空整个工作目录即可 - rm -rf ./*
3. Runner全局生效配置
如果你需要让该规则对Runner承接的所有项目生效,可以修改Runner节点上的config.toml配置,在对应[[runners]]块中添加pre_build_script(运行前清理)或post_build_script(运行后清理)配置项,写入对应的清理命令即可。
内容的提问来源于stack exchange,提问作者Tadeusz
相关产品推荐
相关产品推荐

