用途:本技能用于理解和操作 Apache Beam 的 CI/CD 系统,该系统基于 GitHub Actions,工作流文件位于 .github/workflows/。适合在调试 CI 失败、理解测试工作流或本地复现 CI 命令时使用。
主要能力:区分几类工作流。PreCommit 工作流在 PR 和合并时运行,命名 beam_PreCommit_.yml,如 Java、Python、Go 构建测试,以及 RAT 许可证头检查和 Spotless 代码格式检查。PostCommit 工作流在合并后和定时运行,测试更全面,命名 beam_PostCommit_.yml,包括完整 Java/Python 测试套件、ValidatesRunner 运行器验证和示例流水线测试。定时工作流每晚在 master 运行,检查外部依赖影响,并给 master 打 nightly-master 标签。另有负载测试 beam_LoadTests_.yml、I/O 性能测试 beam_PerformanceTests_.yml,以及发布工作流 cut_release_branch.yml、build_release_candidate.yml、finalize_release.yml、publish_github_release_notes.yml。
使用方式:PR 自动触发 PreCommit,合并触发 PostCommit;可用触发文件运行特定工作流,多数工作流支持通过 GitHub UI 手动 workflow_dispatch。查看结果:进入 PR 的 Checks 标签,点击失败工作流,展开失败 job,查看步骤日志。常见失败包括偶发失败(用触发文件重跑)、超时(合理时增加超时或优化测试)、资源耗尽(检查 GCP 配额与项目设置)。需要 GCP 的工作流使用密钥 GCP_PROJECT_ID、GCP_REGION、GCP_TESTING_BUCKET、GCP_PYTHON_WHEELS_BUCKET、GCP_SA_EMAIL、GCP_SA_KEY,并需相应 IAM 角色。多数工作流跑在自托管 runner 上,GitHub 托管 runner 用于跨平台测试。本地调试可执行工作流中的命令,如 ./gradlew :sdks:java:core:test 或 ./gradlew :sdks:python:test,必要时清理缓存 rm -rf ~/.gradle .gradle、rm -rf build,并确认 Java 版本与 CI 一致。
限制:资料未提供具体超时数值、触发文件格式细节及完整 IAM 配置步骤,需以仓库实际文件为准。