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

GitHub Actions Parallel Testing

Yasuhiroki
October 16, 2019

GitHub Actions Parallel Testing

2019/10/16 GitHub Actions Meetup Tokyo β の発表資料です

Yasuhiroki

October 16, 2019
Tweet

More Decks by Yasuhiroki

Other Decks in Technology

Transcript

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

    View full-size slide

  2. ⾃自⼰己紹介

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

  8. CircleCIの例例
    • circleci tests split --split-by=timings は

    CircleCI 上で記録されたファイルごとのテスト実⾏行行
    時間を元に振り分けてくれる
    container 0
    container 1
    UFTU@@TQFDSC

    UFTU@@TQFDSC
    UFTU@@TQFDSC
    過去の記録から振り分ける

    View full-size slide

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

    View full-size slide

  10. 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

    View full-size slide

  11. テスト結果を集計したい

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

  17. Tips集紹介

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide