SuperAPI AI 工具集

ops-nuke-cicd

通用与其它

查看项目

更新于 10-16 01:24

技能介绍

用途:面向 .NET 服务的 NUKE CI/CD 流水线设计与故障排查。适合重构目标图、拆分测试流程、发布报告、构建推送容器镜像等场景;不适用于应用服务重构或 NUnit fixture 内部实现。

主要能力与用法要点:

  • 目标图:用 DependsOn 表达硬前置、After 排序、Triggers 组合流程、OnlyWhenDynamic 做运行时门控,保持输出契约不变再重构。
  • 测试平台:CI 与本地统一选用 VSTest 或 Microsoft.Testing.Platform 之一。VSTest 在 .NET 10 仍是 dotnet test 默认;单独面向 .NET 10 不会自动选 MTP,需检查 global.json 与 SDK 设置。NUKE issue #1584 跟踪 DotNetTest 对 MTP 的支持,如 helper 尚不支持可经 ProcessTasks.StartProcess 调用。MTP 模式下 --logger 与数据收集器等 VSTest 专用选项不适用。不要在同一 dotnet test 调用中混用两种平台。
  • 分类过滤:每个测试类别对应一个目标和一个过滤条件,类别名集中维护(如常量类),单元目标排除所有非单元类别。
  • 反馈与编排:区分快速本地反馈(构建加过滤测试)与完整 CI 验证(unit+api+db+合并覆盖率);保留一个组合 CI 目标(如 TestAll)。
  • 制品与来源:确定性产出 coverage.cobertura.xml、HTML 摘要、JUnit XML;以 NUKE 目标生成 SBOM,提交 packages.lock.json 并以 RestoreLockedMode=true 还原;用 dotnet nuget verify 做发布前校验;发布按摘要固定(digest-pinned)的镜像引用。
  • Docker:需自定义打包时用 Dockerfile,或考虑 /t:PublishContainer;ContainerFamily 需与基础镜像匹配,.NET 8 起默认非 root(UID 1654)与端口 8080,不要假定 80。测试基础设施用动态主机端口,Docker host 从 Testcontainers 或 DOCKER_HOST 解析,不要假定 localhost。
  • 预检与卫生:昂贵目标前检查 SDK 版本、Docker 可用性与路径;避免并行 dotnet test 写同一输出路径;zsh 下避免未加引号的 glob。

限制:不用于“是否该采用 NUKE”的选型决策;NUKE 的 GitHub Actions YAML 生成属一次性 CLI 生成器,不作运行时目标图调试;NUnit fixture 逻辑、WireMock 配置或测试抖动根因应转交 qa-testing-nunit。若存储库未使用 NUKE,本技能不适用。