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 サポート:CI/CD プロセスの一部として、コンテナイメージのビルドやプッシュを簡単に行えます。
- GitLab.com および セルフマネージド GitLab インスタンスの両方にシームレスに対応。
- 高速な NVMe/SSD ストレージを備えたプライベートかつ専用のインフラストラクチャにより、安定した予測可能なビルドパフォーマンスを実現します。
- 🇪🇺 ヨーロッパ および 🇺🇸 USA のリージョンでご利用いただけますので、チームのニーズに合わせて選択可能です。
時間を節約:最初の GitLab Runner を接続し、数分でパイプラインの実行を開始できます!
ランナーのディスクはパイプライン間で永続化されるため、イメージレイヤーをビルドキャッシュとして再利用できます。これにより繰り返しのビルドが大幅に高速化されます。以下はそのための設定例です。
build-cached:
stage: build
image: docker:29
services:
- name: docker:29-dind
alias: docker
variables:
DOCKER_HOST: "tcp://docker:2375"
DOCKER_TLS_CERTDIR: ""
before_script:
- docker login -u "$CI_REGISTRY_USER" -p "$CI_REGISTRY_PASSWORD" "$CI_REGISTRY"
script:
# キャッシュ用に最新イメージをプル(存在しない場合はスキップ):
- 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のレイヤーキャッシュを活用し、新規または変更されたレイヤーのみ再ビルドされます。