如何配置GitLab CI YAML文件实现特定目录变更时触发QA环境自动部署
问题原因
你现有配置无法生效有两个核心原因:
- 通配符规则不对:
directory/*仅能匹配directory下的一级文件,无法覆盖子目录内的变更,要匹配该目录下所有层级的文件需要用directory/**/* only/changes组合在部分GitLab版本中存在兼容问题,官方已更推荐用rules语法实现同类需求,逻辑更清晰也更稳定
正确配置示例
deploy to qa: script: **aws scripts** stage: deploy environment: name: qa url: **aws bucket url** rules: - if: $CI_COMMIT_BRANCH == 'master' changes: - directory/**/* when: always - when: never
补充注意事项
- GitLab 11.9及以上版本才支持
changes特性,低于该版本的需要先升级GitLab,或者在script段手动加git diff校验变更目录的逻辑 - 如果你需要在合并请求流水线中也触发该校验,可新增规则适配MR场景,对应分支判断条件修改为
$CI_PIPELINE_SOURCE == 'merge_request_event'即可 - 如果仅需要匹配
directory下的一级文件不需要子目录,把通配符改回directory/*即可
内容的提问来源于stack exchange,提问作者mcilhaggis
相关产品推荐
相关产品推荐

