You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在master分支测试失败时立即终止Ansible Playbook运行?

实现master分支测试失败时终止Ansible Playbook运行

完整实现代码

- name: 获取当前Git分支
  shell: git rev-parse --abbrev-ref HEAD
  register: current_branch
  changed_when: false  # 标记为无状态变更,避免每次执行都显示changed

- name: 'Run Tests'
  shell: testing.sh | tee "testing.log"
  register: testing

- name: 'Show log'
  debug: 
    msg: "{{ testing.stdout_lines }}"

- name: 'Set fact'
  set_fact:
     tests: >-
      {{
        (testing.stdout_lines | join(' ') | regex_findall('(\d+)\s*failed') | map('int') | default([0], true)) | max == 0
      }}

- name: master分支测试失败时终止Playbook
  fail:
    msg: "master分支测试失败,立即终止Playbook运行"
  when: current_branch.stdout == 'master' and not tests

关键逻辑说明

  1. 分支判断:通过git rev-parse --abbrev-ref HEAD获取当前工作分支,注册为current_branch,后续仅针对master分支执行终止逻辑。
  2. 测试结果校验:保留你原有的正则提取逻辑,同时添加default([0], true)处理无匹配结果的场景(比如测试输出中没有"failed"关键字时,默认判定为0失败),避免max函数因空列表报错。
  3. 终止触发:使用Ansible的fail模块,仅当当前是master分支且测试失败(not tests)时触发,直接终止Playbook运行并输出提示信息。

注意事项

  • 确保testing.sh的输出格式包含X failed这类可被正则匹配的字符串,否则校验逻辑会默认判定测试通过。
  • changed_when: false是可选优化,仅用于避免将"获取分支"的操作标记为状态变更,不影响核心功能。

内容的提问来源于stack exchange,提问作者scrapkowe

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.13 12:17:12