パイプラインを高速化する5つのGitLab CI/CDベストプラクティス
さまざまなプロジェクトでGitLab CI/CDを使用してきた経験から、一貫してより高速で信頼性の高いパイプラインを実現する5つのプラクティスをご紹介します。
1. キャッシュを賢く使う
ジョブ間で依存関係をキャッシュして、毎回のダウンロードを避ける:
cache:
key: ${CI_COMMIT_REF_SLUG}
paths:
- node_modules/
- .npm/
keyにより、異なるブランチが別々のキャッシュを持つことが保証されます。
2. テストを並列化する
テストスイートを複数のジョブに分割:
test:
parallel: 4
script:
- npm run test -- --shard=$CI_NODE_INDEX/$CI_NODE_TOTAL
これにより、テスト時間を20分から5分に短縮できます。
3. only/exceptの代わりにrules:を使用
新しいrules:構文はより強力で読みやすい:
deploy:
rules:
- if: $CI_COMMIT_BRANCH == "main"
when: on_success
- when: never
4. Dockerイメージを最適化
小さなベースイメージとマルチステージビルドを使用。Alpineベースのイメージは、Ubuntuベースの10分の1のサイズになります。
5. 早く失敗する
高速チェック(リンティング、フォーマット)をパイプラインの最初に配置。コードがコンパイルすらできないなら、20分のテストスイートを実行する意味はありません。
お気に入りのCI/CD最適化は何ですか?ぜひお聞かせください。