GitLab Runner: ビルドの高速化(キャッシュ活用)

このドキュメントはDockerイメージのビルドガイドの一部です。完全なガイドはこちらからご覧いただけます:StackheroランナーとDocker-in-Dockerを活用し、GitLab CI/CDパイプラインから効率的にDockerイメージをビルド&プッシュする方法

👋 Stackhero ドキュメントへようこそ!

Stackhero では、GitLab Runner cloud のシンプルなソリューションを提供しており、GitLab CI/CD ジョブの実行を効率的かつ手間なく行えます。主な特長は以下の通りです:

  • 無制限の CI/CD 分数:パイプラインを必要なだけ何度でも実行でき、分単位の課金や予期しない追加料金はありません。
  • 複数のジョブを同時実行:複数のジョブを並列で実行し、開発スピードを向上できます。
  • Docker executorDocker-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のレイヤーキャッシュを活用し、新規または変更されたレイヤーのみ再ビルドされます。