Upgrade to Pro — share decks privately, control downloads, hide ads and more …

golang-parallel-test-by-github-actions-and-merg...

SatoKeiju
December 11, 2024
140

 golang-parallel-test-by-github-actions-and-merge-coverage-report

SatoKeiju

December 11, 2024
Tweet

Transcript

  1. 遅くなった主な理由: マシンスペック(コア数) Docker 実行環境の使用 - CircleCI GitHub Actions CircleCI About

    GitHub-hosted runners - GitHub Enterprise Cloud Docs ↑のドキュメントはエンプラですが Cloudも同じです
  2. Rubyで用いし先駆者がいた GitHub Actions でテストを並列化して CI 時間を短縮する - Gunosy Tech Blog

    並列化したい数だけ IDを宣言しておいて 全テストをいい感じに 各IDに割り振って
  3. Rubyで用いし先駆者がいた GitHub Actions でテストを並列化して CI 時間を短縮する - Gunosy Tech Blog

    並列化したい数だけ IDを宣言しておいて 各ノードは自分の IDの テストだけ実行 全テストをいい感じに 各IDに割り振って
  4. Rubyで用いし先駆者がいた GitHub Actions でテストを並列化して CI 時間を短縮する - Gunosy Tech Blog

    並列化したい数だけ IDを宣言しておいて 各ノードは自分の IDの テストだけ実行 全テストをいい感じに 各IDに割り振って これをGoでも やりたい!
  5. Goは素晴らしい言語なので $ go test -cover ./... -coverprofile=<ファイル名>.out でテスト時にカバレッジのプロファイルを吐き出しておき $ go

    tool cover -html=<ファイル名>.out -o <ファイル名>.html  でカバレッジレポートを作れる 唯一の懸念点: カバレッジレポートどうしよう
  6. 唯一の懸念点: カバレッジレポートどうしよう Goは素晴らしい言語なので $ go test -cover ./... -coverprofile=<ファイル名>.out でテスト時にカバレッジのプロファイルを吐き出しておき

    $ go tool cover -html=<ファイル名>.out -o <ファイル名>.html  でカバレッジレポートを作れる でもnノードで分割実行したら細切れのカバレッジレポートが n個できちゃう
  7. 唯一の懸念点: カバレッジレポートどうしよう Goは素晴らしい言語なので $ go test -cover ./... -coverprofile=<ファイル名>.out でテスト時にカバレッジのプロファイルを吐き出しておき

    $ go tool cover -html=<ファイル名>.out -o <ファイル名>.html  でカバレッジレポートを作れる でもnノードで分割実行したら細切れのカバレッジレポートが n個できちゃう → 結論: プロファイルの仕様で (無理やり)解決!