CIでDocker Build Cloudを使用する
CIでDocker Build Cloudを使用することで、ビルドパイプラインのスピードを向上させ、待ち時間やコンテキストスイッチングを減らすことができます。通常通りCIワークフローを管理し、ビルドの実行をDocker Build Cloudに委任します。
CIでDocker Build Cloudを使用してビルドするには、次のステップを実行します:
- Dockerアカウントにサインインする。
- Buildxをセットアップし、ビルダーに接続する。
- ビルドを実行する。
CIでDocker Build Cloudを使用する場合、イメージをロードしてからプッシュするのではなく、ビルド結果を直接レジストリにプッシュすることを推奨します。これにより、ビルドが高速化し、不必要なファイル転送を回避できます。
ビルドして結果を破棄したい場合は、結果をビルドキャッシュにエクスポートするか、イメージにタグを付けずにビルドします。Docker Build Cloudを使用する際、タグ付きイメージをビルドすると、Buildxは自動的にビルド結果をロードします。詳細はビルド結果のロードをご覧ください。
Docker Build Cloudのビルドには2時間のタイムアウト制限があります。2時間以上実行されるビルドは自動的にキャンセルされます。
docker/build-push-action
およびdocker/bake-action
のバージョン4.0.0以降では、デフォルトでProvenance Attestationsを使用してイメージをビルドします。Docker Build Cloudは、イメージをレジストリにプッシュしない場合、自動的にローカルのイメージストアにロードしようとします。
これにより、タグ付きイメージをビルドしてレジストリにプッシュしない場合、Docker Build CloudがAttestationsを含むイメージをロードしようとしても、GitHubランナーのローカルイメージストアがAttestationsをサポートしていないため、イメージのロードに失敗します。
docker/build-push-action
でDocker Build Cloudを使用してイメージをロードしたい場合は、GitHub Actionの入力(またはdocker-bake.hcl
内でBakeを使用する場合)でprovenance: false
を設定してProvenance Attestationsを無効にする必要があります。
name: ci
on:
push:
branches:
- "main"
jobs:
docker:
runs-on: ubuntu-latest
steps:
- name: Log in to Docker Hub
uses: docker/login-action@v3
with:
username: ${{ vars.DOCKER_USER }}
password: ${{ secrets.DOCKER_PAT }}
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v3
with:
version: "lab:latest"
driver: cloud
endpoint: "<ORG>/default"
install: true
- name: Build and push
uses: docker/build-push-action@v6
with:
tags: "<IMAGE>"
# プルリクエストの場合は結果をビルドキャッシュにエクスポートし、
# それ以外の場合はレジストリにプッシュします。
outputs: ${{ github.event_name == 'pull_request' && 'type=cacheonly' || 'type=registry' }}