--- name: cicd description: >- 用 gh CLI 触发/查看 GitHub CI/CD:手动 dispatch 工作流 (release/coverage/docker)、查看运行状态与失败日志、重跑失败 job. 用户要求"触发 CI"、"看流水线"、"重跑失败的 job"时使用;创建 dev 到 master 的 PR 使用 /pr,正式发版使用 /release. --- # GitHub CI/CD 操作 仓库:`thun-res/vlink`。普通功能分支 PR 目标为 `master`;维护者通过 `/pr` 处理长期集成分支 `dev` → `master`。所有操作用 `gh` CLI 完成。 ## 1. 触发矩阵 | 工作流 | PR | push¹ | release | schedule | dispatch | workflow_call | | ------ | :-: | :---: | :-----: | :------: | :------: | :-----------: | | `ci-agent-skills.yml` | ✔ | ✔ | — | — | ✔ | — | | `ci-lint.yml` | ✔ | ✔ | — | — | ✔ | — | | `ci-test.yml` | ✔ | ✔ | — | — | ✔ | — | | `ci-coverage.yml` | — | — | — | 每周 | ✔ | ✔ | | `docker-images.yml` | — | — | — | — | ✔ | ✔ | | `release-portable-linux.yml` | — | — | — | — | — | ✔ | | `release-portable-macos.yml` | — | — | — | — | — | ✔ | | `release-portable-windows.yml` | — | — | — | — | — | ✔ | | `release-linux-packages.yml` | — | — | — | — | — | ✔ | | `release.yml` | — | — | published | — | ✔ | — | ¹ `ci-agent-skills.yml`、`ci-lint.yml` 与 `ci-test.yml` 的 push 分支为 `master`/`main`/`develop`/`dev`;PR 使用同一分支集合。`ci-lint.yml` 与 `ci-test.yml` 忽略纯 `**.md`、`doc/**`、`.github/wiki/**` 改动; `ci-agent-skills.yml` 只处理 `AGENTS.md`、`AI-POLICY.md`、`.agents/**`、 `.github/copilot-instructions.md` 及对应安装、校验入口。 Copilot code review 是 GitHub 托管服务,不是仓库 Actions workflow, 不支持通过本 skill dispatch、查看 job 日志或重跑。其自动审查设置在 GitHub 账户/仓库中管理,不得把服务可用性配置为 CI 必需检查。 `release.yml` 复用 docker、coverage 与四个 `release-*` 子工作流; 四个子工作流只能由 `workflow_call` 调用,不能直接 dispatch。 coverage 的定时任务为每周日 18:30 UTC,并带最近提交门禁;手动 dispatch 或 release 传入 `force_run` 时不受该门禁。 ## 2. PR 与 Release 分工 - 当前 `dev` 改动提交到 `master` 使用 `/pr`;它负责调用 `/commit`、 正常 push、中文标题/正文和模板核对. - `master` 正式版本的 tag 与 GitHub Release 使用 `/release`;它负责版本、 CI、tag、发布工作流和资产核对. - 本 skill 只负责工作流 dispatch、状态、日志和重跑,不重复实现 PR 或 Release 发布流程. ## 3. 手动 dispatch 工作流 ```bash vlink_ref="" gh workflow run ci-lint.yml --repo thun-res/vlink --ref "${vlink_ref}" gh workflow run ci-test.yml --repo thun-res/vlink --ref "${vlink_ref}" gh workflow run ci-agent-skills.yml --repo thun-res/vlink --ref "${vlink_ref}" gh workflow run ci-coverage.yml --repo thun-res/vlink --ref "${vlink_ref}" gh workflow run docker-images.yml --repo thun-res/vlink --ref master gh workflow run release.yml --repo thun-res/vlink --ref master \ -f publish_pages=true -f build_portable=true -f build_linux_packages=true ``` 前四条的 `vlink_ref` 应设为待验证的功能分支。发布类工作流固定从 `master` 触发。 `docker-images.yml` 会向 GHCR 推送镜像并移动 `vlink-ubuntu20:latest` / `vlink-ubuntu22:latest`; `release.yml` 会构建发布产物并可部署 Pages。两者都属于发布写操作, **执行前必须向用户复述 workflow、ref、参数和外部影响并确认**。 ## 4. 查看状态与日志 ```bash gh run list --repo thun-res/vlink --branch dev --limit 10 # 最近运行 gh pr checks --repo thun-res/vlink # PR 的检查项 gh run view --repo thun-res/vlink # 单次运行概览 gh run view --repo thun-res/vlink --log-failed # 只看失败日志 gh run watch --repo thun-res/vlink # 阻塞式等待完成 ``` 失败排查顺序:`--log-failed` 定位首个报错 → 本地用对应 skill 复现 (lint 失败 → `/format` `/check` `/clang-tidy`;Linux ASan/内存错误 → `/asan`;普通单元测试或 macOS/Windows 非 ASan 失败 → `/test`)。 ## 5. 重跑 ```bash gh run rerun --repo thun-res/vlink --failed # 只重跑失败 job gh run rerun --repo thun-res/vlink # 全量重跑 ``` 仅在确认失败为环境抖动(网络、runner 超时)时才直接重跑;代码性失败先修 代码再 push,不要靠重跑碰运气。