跳转至

GitHub Action 门禁(CI 集成)

迁移自 README 精简版主页;上架与发布流程见 publish-to-marketplace返回 README

仓库根目录提供复合 Action(action.yml),可直接把 phase-barrier 作为 CI 阶段闸门: Agent 产出的工作区未达到期望阶段时,CI 直接失败。

# 示例:PR 时要求工作区至少完成“实现代码”(阶段 3)
- uses: Xuqing0415/phase-barrier@v0.26.0
  with:
    workspace: .          # 工作区路径(相对仓库根)
    expected_stage: 3     # 0-6;当前阶段 < 期望阶段则失败
    # config: gate.yaml   # 可选:phase-barrier YAML 配置(含 coverage_threshold 等)
输入 默认 说明
workspace . 工作区路径(相对仓库根)
config YAML 配置文件路径
mode inspect inspect 检查阶段;advance 推进到 --toexec 经门禁执行 commandcheck 只读校验是否放行(v0.22.0);verify 校验本次 PR 变更未篡改证据文件(v0.26.0)
expected_stage 6 inspect 模式:当前阶段低于该值则失败
to advance 模式的目标阶段(必须等于当前阶段 + 1)
command exec 模式的测试/校验命令(仅 mode=exec 必填,v0.18.0)
stage check 模式的阶段号 0-6,校验是否放行进入该阶段(v0.22.0)
cwd exec 模式的工作目录(相对 workspace,可选;v0.19.0)
git_base PR 基线 SHA verify 模式的 Git 基线 ref,默认 ${{ github.event.pull_request.base.sha }}(v0.26.0)
user_request advance 首次初始化时记录的用户需求原文
version 安装的 phase-barrier 版本(留空取最新版)
local false 安装本地仓库代码而非 PyPI(CI 自测用)

参数联动(v0.25.0)mode 决定需要哪些参数——advance 需配 tocheck 需配 stageexec 需配 command;不满足时门禁直接失败并输出 ::error::

Action 输出(v0.25.0):门禁步骤通过后会输出 workspace / stage / allowed,下游步骤可通过 steps.gate.outputs.* 复用:

- uses: Xuqing0415/phase-barrier@v0.26.0
  id: gate
  with:
    workspace: .
    expected_stage: 3

- name: 复用门禁输出
  run: |
    echo "当前阶段: ${{ steps.gate.outputs.stage }}"
    echo "是否放行: ${{ steps.gate.outputs.allowed }}"

stage 取值:inspect = 当前阶段,check = 输入 stageadvance = 目标 toexec 模式为空。

输入校验(v0.14.0 / v0.18.0 / v0.23.0 / v0.26.0)mode 必须是 inspect / advance / exec / check / verifyexpected_stageadvance 模式的 tocheck 模式的 stage 必须是 0-6 的整数;workspace 必须存在。参数非法时 CI 直接失败并输出 ::error:: 定位信息,避免静默误判。

完整示例见 examples/github-action/gate.yml(通用)、gate-go.yml(Go)、 gate-rust.yml(Rust)、gate-pr.yml(PR 增量校验,v0.26.0);Go / Rust 示例额外安装 setup-go / rust-toolchain, 让 advance 模式能用真实 gofmt / cargo check 校验实现。本项目 CI 自带 gate-action 自测 job,验证“达到期望阶段通过 / 未达到失败”两条路径。

该 Action 已发布到 GitHub Marketplace (已确认上架:Marketplace 页面显示 Phase-Barrier Gate,Latest 版本与 GitHub Release 同步): 每次打 v* tag 时 release 工作流自动创建 GitHub Release(附 CHANGELOG 摘要与发行包), Action 随之自动上架,用户可直接在 Marketplace 搜索 Phase-Barrier Gate 使用。 上架与发布流程详见 docs/publish-to-marketplace.md