- 2024/5/16
- https://gaugt.connpass.com/event/317178/
- 普段GitHub Actionsは使ったないけど昔興味があったので参加してみました
- 知らないことが多かったし、そもそもCIツールを全然使いこなせてないと思えたのがよかったです
JavaScript/TypeScript action 開発・運用の知見を大公開
- @piris314さん
GitHubActionsの処理を使い回す
- JSで共通処理を書いて使い回すことができる
- TSで書いてビルドするのでももちろんOK
- DockerContainerでやる方法もある
- actions.yml
- インプットのデフォルト値とか設定できる
- ymlのテストもjsでする
- 便利ライブラリ
@actions
シリーズ@octokit
シリーズ@vercel/ncc
- js-yamlなどJSのライブラリ
- ブランチ指定での実行はできないようにしている
- 破壊的変更を入れた時に利用者側でコケるようになるから
サードパーティーランナーの紹介と使う上でのポイント
セルフホステッドランナー
- GitHubが提供してない環境でjobを動かせる
- Namespace
- BuildJet
- WarpBuild
- AWS CodeBuild
- 料金抑えたい
- 実行時間短くしたい
- シングルコアの性能高いのが売りのものも多い
- クラウドストレージへアップロード/ダウンロード
- S3使うならAWS上の方がはやいとか(10倍とか)
- 詳細なジョブの分析
- Namespaceは管理画面が充実
- 注意点
E2Eテストワークフローを高速化・安定化させる取り組み
E2Eテストのワークフロー
- セルフホステッドランナー上で動かしてる
- つらみ
- 実行時間が長い
- 30分以上とか
- Flaky
- 変更ないのに失敗したり
- 実行時間が長い
- 実行時間の可視化
- actions-timelineで所要時間を可視化
- E2Eが長かった
- 失敗のボトルネックを計測
- ジョブ/ステップごとの成功率を計測するライブラリを作った
- セットアップ系でも失敗してた
- 不安定さの解消
- ServiceContainer(GitHubActionsが勝手にContainer立ち上げてくれるやつ)
- Docker pullでrate limitで失敗してた
- DockerHubからAmazonECRに移した
- ついでに起動ジョブがはやくなった
- npm installで失敗する
- テストがFlaky
- 成功するときは30分前後だったのでタイムアウトで切るようにした
- 失敗したら自動リトライするようなワークフロー作った
- ServiceContainer(GitHubActionsが勝手にContainer立ち上げてくれるやつ)