Slide 1

Slide 1 text

Nx CloudでCIを爆速にした話 TechBrew 〜 一杯のお酒で繋がるエンジニアたち〜@福岡 @puku0x Noriyuki Shinpuku

Slide 2

Slide 2 text

@puku0x 2

Slide 3

Slide 3 text

@puku0x 3 CIにどれぐらい時間がかかっていますか?

Slide 4

Slide 4 text

@puku0x 成長のジレンマ 4 機能追加 コード量 増 CI時間 増

Slide 5

Slide 5 text

@puku0x 5 CIが遅いとどうなる?

Slide 6

Slide 6 text

@puku0x レビューが遅くなる 6 20分後でいいや

Slide 7

Slide 7 text

@puku0x 7 ブランチの生存期間が 延びるとどうなる?

Slide 8

Slide 8 text

@puku0x コンフリクトが増える 8

Slide 9

Slide 9 text

@puku0x 9 CI高速化がカギ

Slide 10

Slide 10 text

@puku0x CI高速化のテクニック ● キャッシュの活用 ~/.npm や node_modules 等をキャッシュ ● 変更検知 影響範囲のコードのみ実行 10 その他: ジョブ並列化、仮想マシンのグレードアップ等

Slide 11

Slide 11 text

node_modulesのキャッシュ 11 strategy: matrix: node: ['16', '18'] steps: - uses: actions/cache@v3 id: cache with: path: node_modules key: ${{ runner.os }}-node-${{ matrix.node }}-npm-${{ hashFiles('**/package-lock.json') }

Slide 12

Slide 12 text

- uses: actions/cache@v3 if: steps.cache.outputs.cache-hit != 'true' with: path: | ~/.npm ~/.cache/Cypress key: ${{ runner.os }}-node-${{ matrix.node }}-npm-${{ hashFiles('**/package-lock.json') } restore-keys: | ${{ runner.os }}-node-${{ matrix.node }}-npm- - name: Install dependencies if: steps.cache.outputs.cache-hit != 'true' run: npm ci 他のディレクトリのキャッシュ 12

Slide 13

Slide 13 text

@puku0x 13 https://nx.dev/

Slide 14

Slide 14 text

@puku0x Nx + Nx Cloud ● nx affected による変更検知 ● Nx Cloudによるリモートキャッシュ ○ CI時間平均 約10分 → 約5分 ※最短で1分未満 14

Slide 15

Slide 15 text

@puku0x 15

Slide 16

Slide 16 text

@puku0x 16 300時間/月 以上を削減!

Slide 17

Slide 17 text

@puku0x 17 https://speakerdeck.com/puku0x/findynohurontoendoshe-ji-shua-xin-wotong-sitede-raretaji-shu-de-fu-zhai-tonoxiang-kihe-ifang

Slide 18

Slide 18 text

@puku0x Nxはいいぞ @puku0x Noriyuki Shinpuku