GitLab Runner: ビルドの高速化(キャッシュの活用)
このドキュメントはDockerイメージのビルドガイドの一部です。完全なガイドはこちらからご覧いただけます:StackheroランナーとDocker-in-Dockerを使って、GitLab CI/CDパイプラインからDockerイメージをビルドおよびプッシュする方法。
👋 Stackhero ドキュメントへようこそ!
Stackhero では、GitLab Runner cloud を簡単にご利用いただけるソリューションとしてご提供しています。GitLab CI/CD ジョブを効率的に処理できるよう設計されています。主な特長は以下の通りです:
- 無制限の CI/CD 分数:分単位の課金はありませんので、必要なときにいつでもパイプラインを実行できます。
- 複数ジョブの同時実行:複数のジョブを同時に実行し、パイプライン全体の処理速度を向上させます。
- Docker executor と Docker-in-Docker サポート:コンテナイメージのビルドやプッシュを効率化します。
- GitLab.com およびあらゆる セルフホスト型 GitLab インスタンスに対応。
- 高速な NVMe/SSD ディスクを搭載した プライベート専用 VM で、安定したビルド環境を提供します。
- 🇪🇺 ヨーロッパ および 🇺🇸 USA リージョンでご利用可能です。
時間を節約:最初の GitLab Runner を接続し、数分でパイプラインの実行を開始できます!
ランナーのディスクはパイプライン間で永続化されるため、以前のイメージレイヤーをキャッシュとして再利用することでビルドを高速化できます。以下のように設定します。
build-cached:
stage: build
image: docker:27
services:
- docker:27-dind
variables:
DOCKER_TLS_CERTDIR: "/certs"
before_script:
- docker login -u "$CI_REGISTRY_USER" -p "$CI_REGISTRY_PASSWORD" "$CI_REGISTRY"
script:
# キャッシュ用に最新イメージをpull(まだ存在しなくても問題ありません):
- docker pull "$CI_REGISTRY_IMAGE:latest" || true
- docker build --cache-from "$CI_REGISTRY_IMAGE:latest" -t "$CI_REGISTRY_IMAGE:latest" .
- docker push "$CI_REGISTRY_IMAGE:latest"
この方法により、Dockerのレイヤーキャッシュを最大限活用し、パイプラインの処理速度が時間とともに向上します。