Slide 1

Slide 1 text

GitHub Actions Parallel Testing GitHub Actions Meetup Tokyo β A10 Lab Inc. yasuhiroki

Slide 2

Slide 2 text

⾃自⼰己紹介

Slide 3

Slide 3 text

Twitter

Slide 4

Slide 4 text

⾃自⼰己紹介 • A10 Lab Inc. • 元Jenkinsおじさん • 現CircleCIおじさん • CircleCI User Community Leader

Slide 5

Slide 5 text

本発表の概要 • GitHub Actions で並列列テスト試してみた • 内容は個⼈人的 Tipsがメイン • 私も含め皆さんの間で情報交換するきっか けになると嬉しい

Slide 6

Slide 6 text

本題

Slide 7

Slide 7 text

やりたいこと 複数のテストを 分割して並列列して実⾏行行したい

Slide 8

Slide 8 text

matrix を使えばできる • https://github.com/yasuhiroki/parallel-test- github-actions-sample/tree/ b7e78a7c731a6b0590a636ed738eddfe5b3 0f65e/.github/workflows/rspec-parallels-3- node.yml#L8

Slide 9

Slide 9 text

テスト時間を調整したい 6min 2min 4min 4min 4min 4min job 1 job 2 job 3 job 1 job 2 job 3

Slide 10

Slide 10 text

CircleCIの例例 • circleci tests split --split-by=timings は
 CircleCI 上で記録されたファイルごとのテスト実⾏行行 時間を元に振り分けてくれる container 0 container 1 UFTU@@TQFDSC
 UFTU@@TQFDSC UFTU@@TQFDSC 過去の記録から振り分ける

Slide 11

Slide 11 text

knapsack • https://github.com/ArturT/knapsack • ファイルごとのテスト実⾏行行時間を JSON に出 ⼒力力してくれる • その JSON と並列列数から良い感じに割り振っ てくれる • クラウド版もあるらしい?

Slide 12

Slide 12 text

knapsack の使⽤用例例 • テスト実⾏行行時間 JSON • https://github.com/yasuhiroki/parallel-test-github-actions- sample/tree/b7e78a7c731a6b0590a636ed738eddfe5b30f65e/ knapsack_rspec_report.json • Workflow 例例 • https://github.com/yasuhiroki/parallel-test-github-actions- sample/tree/ b7e78a7c731a6b0590a636ed738eddfe5b30f65e/.github/ workflows/rspec-parallels-knapsack.yml#L21

Slide 13

Slide 13 text

テスト結果を集計したい

Slide 14

Slide 14 text

• artifact を使う テスト結果を集計したい uses: actions/upload-artifact@master with: name: reports path: reports reports

Slide 15

Slide 15 text

• artifact を使う テスト結果を集計したい uses: actions/download-artifact@master with: name: reports reports

Slide 16

Slide 16 text

毎回 install するのやめたい • キャッシュ機能がリリースされるのを待とう

Slide 17

Slide 17 text

毎回 install するのやめたい • 同じ Workflow 内なら artifact が使えるかも? • upload が遅くて逆効果だった • https://github.com/yasuhiroki/enjoy- github-actions/commit/ 9e8e9de9c6898f1fc9f491fe11e75e87a4b 5d0cb/checks?check_suite_id=266056589

Slide 18

Slide 18 text

リポジトリURL • https://github.com/yasuhiroki/enjoy-github- actions • https://github.com/yasuhiroki/parallel-test- github-actions-sample

Slide 19

Slide 19 text

Tips集紹介

Slide 20

Slide 20 text

actions/github-script • JavaScriptを直接 YAML に書けちゃう •

Slide 21

Slide 21 text

GitHub token 取得⽅方法 • 実は2パターン書き⽅方がある • secrets.GITHUB_TOKEN • github.token •

Slide 22

Slide 22 text

commit_comment is not a valid event name • 急に is not a valid って⾔言われるようになった

Slide 23

Slide 23 text

ご清聴ありがとうございました