如何仅运行特定阶段?独立阶段每周执行方法咨询
单独运行单个CI/CD阶段的实现方案
以下是两种可靠的实现思路,适用于主流CI/CD平台:
1. 给阶段添加触发规则过滤
在主CI配置文件中,为目标独立阶段和其他阶段分别设置触发条件,确保每周调度时仅执行该独立阶段:
- 给常规阶段设置规则:仅在非每周调度(比如代码推送、手动触发)时运行
- 给独立阶段设置规则:仅在每周调度时运行
示例(GitLab CI)
假设你的独立阶段名为weekly-cleanup,配置如下:
stages: - build - test - deploy - weekly-cleanup # 常规阶段:排除每周调度场景 build: stage: build rules: - if: '$CI_PIPELINE_SOURCE != "schedule"' script: - npm run build test: stage: test rules: - if: '$CI_PIPELINE_SOURCE != "schedule"' script: - npm run test deploy: stage: deploy rules: - if: '$CI_PIPELINE_SOURCE != "schedule"' script: - ./deploy.sh # 独立阶段:仅在每周调度时执行 weekly-cleanup: stage: weekly-cleanup rules: - if: '$CI_PIPELINE_SOURCE == "schedule"' when: always script: - ./weekly-cleanup-script.sh # 配置每周触发时间(例:每周一凌晨1点) schedule: cron: '0 1 * * 1' timezone: 'Asia/Shanghai'
2. 拆分独立配置文件
把独立阶段的任务单独写在一个CI配置文件中,每周调度时仅触发这个独立文件,完全与主流程隔离:
- 创建独立配置文件(比如
.gitlab-ci-weekly.yml),只包含该阶段的任务 - 在CI平台的调度设置中,指定使用这个独立配置文件运行任务
内容的提问来源于stack exchange,提问作者MrTux01
相关产品推荐
相关产品推荐

