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

CI/CD 改善の勘所

Koutarou Chikuba
January 14, 2025
8

CI/CD 改善の勘所

Koutarou Chikuba

January 14, 2025
Tweet

Transcript

  1. アプリケーション/モジュールの設計パターン 単一モジュール 利用される最小の利用単位 単一アプリケーション デプロイを伴うサーバー/クライアントアプリケーション モノレポ packages/* , apps/* 複数のモジュール/アプリケーションで構成。内部依存がある

    同一リポジトリ内に複数のモノレポ 複雑。コンウェイ的な事情。大抵 shared/** な共有ライブラリもある 分割統治: コスパがいい単一ライブラリ+ユニットテストを最小単位で考える状態を作る
  2. CIチューニング方針 目安: 単体テスト: 5分以内 / E2E 込み 15分以内 トップダウンに並列化 /

    ボトムアップにマイクロチューニング 過度に複雑にならない範囲で ワークフローを並列化する 前提が強いと再設計が大変で、腐りやすい。多少愚直なぐらいでいい モジュール単位のテスト自体に柔軟性がほしい。特にテストランナー設定 共通セットアップ(テンプレート)部分を強めにチューニング
  3. E2E やるか問題 前提として、テストピラミッドで考える 第5回 テストピラミッド ~自動テストの信頼性を中長期的に保つ最適なバラ ンス~ | gihyo.jp E2E は高コスト低リターン

    同じテストがユニットテストで書けるなら、ユニットテストで書く 導入に迷うぐらいなら、やるな E2E を CI に導入したら5分以内はほぼ無理 ユニットテストのカバレッジが80%超えてまだ不安だったら検証する
  4. 失敗集 git の履歴が膨らんで checkout だけで 2分超えた workspaces 未対応の npm@6 で

    npm link でハックしてたら再現できなくなった xargs で rollup をスレッド数だけ並列化したらM1を2台破壊した yarn v1 にしかない --modules-folder を使ったら他に再現できる環境がなくなっ た 型だけ定義する types モジュールを切り出したら循環参照が解決できなくなった nx の生成するボイラープレートが古くて負債を再生産し続けていた 共通セットアップの docker network 上のエンドポイントに全モジュールが依存して 剥がせない モジュール分割せずに新旧E2Eテストランナーを複数入れたら、 dependencies がデ ッドロック