GitLab CI配置:让任务跳过手动触发任务在指定任务后执行
解决方案
直接通过给report:sonarqube任务添加needs关键字,指定仅依赖deploy:development即可实现需求,修改后的完整配置如下:
stages: - test - assemble - deploy - report deploy:development: environment: development resource_group: deployment rules: - if: $CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH script: - ./deploy.sh stage: deploy deploy:production: environment: production resource_group: deployment rules: - if: $CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH when: manual script: - ./deploy.sh stage: deploy report:sonarqube: needs: [deploy:development] # 核心修改:仅等待开发环境部署完成 rules: - if: $CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH script: - ./gradlew sonar stage: report
配置说明:
needs关键字的作用:让report:sonarqube跳过等待整个deploy阶段,只在deploy:development成功执行完成后立即启动,完全不依赖deploy:production的状态(不管它是否被手动触发)。- 保持生产部署的约束:
deploy:production依然保留手动触发规则,且未添加allow_failure: true,因此一旦手动触发后执行失败,整个流水线会被标记为失败,符合生产部署不能失败的要求。 - 资源组依然生效:
resource_group: deployment确保deploy:development和deploy:production不会同时执行,避免部署冲突。
内容的提问来源于stack exchange,提问作者user4695271
相关产品推荐
相关产品推荐

