基于子文件夹提交触发DevOps Agent Job的运行条件配置问题
Agent Job 路径触发条件配置方案
核心逻辑
你需要基于CI系统内置的路径变更检测能力,为两个Agent Job分别配置专属运行规则,不需要修改已有的全局路径过滤配置,仅在Job层级追加条件即可。
具体配置步骤
- 确认所用CI平台的路径匹配语法,主流平台的配置方式如下:
- GitLab CI:直接在Job的
rules块中使用changes字段匹配路径 - GitHub Actions:通过
github.event上下文变量判断变更路径,或使用paths-filter官方Action生成标记 - Azure DevOps:在Job的
condition字段中调用Build.SourceVersion相关内置变量匹配路径 - Jenkins:使用
changeset全局方法判断路径变更
- GitLab CI:直接在Job的
- 给Agent X配置运行条件:仅当本次触发的变更包含A文件夹下的任意文件时,Job才启动
- 给Agent Y配置运行条件:仅当本次触发的变更包含B文件夹下的任意文件时,Job才启动
如果本次提交同时修改了A、B两个文件夹的内容,两个Agent Job会同时触发运行,符合常规业务需求。
配置示例
GitLab CI 示例
agent_x: tags: [agent-x] rules: - changes: - "A/**/*" # 匹配A文件夹下所有层级的文件 when: on_success - when: never agent_y: tags: [agent-y] rules: - changes: - "B/**/*" # 匹配B文件夹下所有层级的文件 when: on_success - when: never
GitHub Actions 示例
jobs: agent-x: runs-on: [self-hosted, agent-x] # 仅当A目录有变更时运行 if: ${{ contains(join(github.event.head_commit.modified, ','), 'A/') }} steps: - run: echo "Running on Agent X for folder A changes" agent-y: runs-on: [self-hosted, agent-y] # 仅当B目录有变更时运行 if: ${{ contains(join(github.event.head_commit.modified, ','), 'B/') }} steps: - run: echo "Running on Agent Y for folder B changes"
内容的提问来源于stack exchange,提问作者SukumarVinnakota
相关产品推荐
相关产品推荐

