Hasty Briefsbeta

双语

Scaling Golang CI by Replacing actions/setup-go

3 hours ago
  • CloudX 用自定义的 cloudx-io/setup-go 操作替换了 GitHub 默认的 actions/setup-go 以加速 CI,使并行作业的中位运行时间减少了 69%。
  • 默认的 actions/setup-go 会导致并行作业因使用不完整的缓存键而相互干扰,引发缓存陈旧和不必要的重复工作;发现 86% 的测试运行是不必要的。
  • Go 的工具链缓存(模块、构建、测试)在持久性文件系统上高效运行,但在临时 CI 环境中,由于 GitHub Actions 缓存的限制,表现不佳。
  • cloudx-io/setup-go 通过将作业标识和运行 ID 纳入缓存键来改进缓存,确保不同作业拥有独立的缓存,并在每次运行后保存缓存以保持新鲜度。
  • 新方法的缺点包括更大的、增长更快的缓存块需要自动清理以及可能扩容的 GitHub Actions 缓存容量,但这些被更快的运行时间所抵消。