用途:为 .NET 项目编写可组合的 GitHub Actions 工作流,覆盖可复用工作流、复合操作、矩阵构建、路径触发、并发控制、环境防护、缓存与手动触发等模式。
主要能力:
- 可复用工作流(workflow_call):定义 inputs、outputs、secrets 契约,支持跨仓库引用(如 my-org/.github-workflows/.github/workflows/dotnet-build.yml@v1)与 secrets: inherit。
- 复合操作(composite action):将共享步骤序列打包为单个可复用操作,适合共享的 setup/teardown 序列。
- 矩阵构建:跨 TFM 与操作系统组合,支持 include/exclude、fail-fast: false,以及从 JSON 动态生成矩阵。
- 路径触发:paths 白名单或 paths-ignore 黑名单,二者不可同时使用。
- 并发组:用 concurrency 取消重复运行;部署场景应设 cancel-in-progress: false。
- 环境防护规则:required reviewers、wait timer、分支限制、自定义防护规则及环境级 secrets。
- 缓存:NuGet 包缓存(actions/cache@v4)、actions/setup-dotnet@v4 的 cache: true、.NET 9+ 构建输出缓存。
- workflow_dispatch 输入:string、boolean、choice、environment 类型。
版本假设:GitHub Actions 工作流语法 v2;actions/setup-dotnet@v4 支持 .NET 8/9/10;actions/cache@v4。
使用方式:在 .github/workflows 下定义可复用工作流,在调用方用 uses: ./.github/workflows/xxx.yml 并传 with/secrets;复合操作放在 .github/actions/<name>/action.yml,用 runs.using: 'composite'。
限制与注意事项:paths 与 paths-ignore 不可混用;矩阵构建应设 fail-fast: false;bash 步骤使用 set -euo pipefail;缓存键需包含 runner.os;不要在 workflow 中硬编码 TFM;secrets: inherit 会传递全部密钥,敏感场景应显式声明。
范围外:起始 CI/CD 模板、CLI 发布流水线、基准测试 CI、Azure DevOps 模式、构建/测试细节、发布与部署工作流均不在本技能范围内。