Docker は、V2 Github Action の GA を発表できることを嬉しく思います。 私たちは過去数か月間、 @crazy-max と協力しており、既存のGithubアクションを改善する方法について、より広いコミュニティからフィードバックを得ています。 私たちは今、単一のアクションから、より明確な分割と高度なオプションセットに移行し、ビルド&プッシュだけでなく、複数のアーキテクチャやビルドキャッシュなどの機能もサポートできるようになりました。
V2アクションの出現による大きな変化は、DockerがGithubで提供しているアクションの数の増加でもあります。 このよりモジュール化されたアプローチとGithub Actionsのパワーにより、元のアクションに最小限のUX変更を加え、さらに多くの機能を追加することができました。
これらの事前構成手順のすべてを実際に必要とせず、前のワークフローと同じワークフローを提供するために引き続き使用できる、よりメタなビルド/プッシュアクションがまだあります。 アップグレードする唯一の変更は、ログインを新しいステップに分割し、ビルダーをセットアップするステップがあることです。
-
name: Setup Docker Buildx
uses: docker/setup-buildx-action@v1
このステップはビルダーの設定であり、これはDockerイメージの構築に使用するツールです。
これは、完全なGithubアクションが次のようになったことを意味します。
name: ci
on:
push:
branches: main
jobs:
main:
runs-on: ubuntu-latest
steps:
-
name: Setup Docker Buildx
uses: docker/setup-buildx-action@v1
-
name: Login to DockerHub
uses: docker/login-action@v1
with:
username: ${{ secrets.DOCKERHUB_USERNAME }}
password: ${{ secrets.DOCKERHUB_TOKEN }}
-
name: Build and push
id: docker_build
uses: docker/build-push-action@v2
with:
push: true
tags: bengotch/samplepython:latest
それでは、このステップと新しいQEMUオプションを追加することでロックを解除したより高度な機能のいくつかを見てみましょう。
マルチプラットフォーム
BuildKitを利用することで、マルチアーキテクチャビルドにアクセスできるようになり、複数のプラットフォームを対象としたイメージを構築したり、Armイメージをビルドしたりできるようになりました。
これを行うには、 QEMU ステップを追加する必要があります。
name: Set up QEMU
uses: docker/setup-qemu-action@v1
そして、ビルドとプッシュのステップ内で、使用するプラットフォームを指定する必要があります。
-
name: Build and push
uses: docker/build-push-action@v2
with:
context: .
file: ./Dockerfile
platforms: linux/386,linux/amd64,linux/arm/v6,linux/arm/v7,linux/arm64,linux/ppc64le,linux/s390x
push: true
tags: |
bengotch/app:latest
キャッシュレジストリ
キャッシュを利用してビルドを高速化するために、
name: ci
on:
push:
branches: master
jobs:
registry-cache:
runs-on: ubuntu-latest
steps:
-
name: Set up Docker Buildx
uses: docker/setup-buildx-action@v1
-
name: Login to DockerHub
uses: docker/login-action@v1
with:
username: ${{ secrets.DOCKERHUB_USERNAME }}
password: ${{ secrets.DOCKERHUB_TOKEN }}
-
name: Build and push
uses: docker/build-push-action@v2
with:
push: true
tags: user/app:latest
cache-from: type=registry,ref=user/app:latest
cache-to: type=inline
最新バージョンの Github Action を使用するためのベスト プラクティスのその他の例については、Chads サンプル リポジトリをご覧ください。
https://github.com/metcalfc/docker-action-examples。 ここにある機能、または複数のレジストリへのプッシュ、e2eテスト用のローカルレジストリの使用、Dockerクライアントへのイメージのエクスポートなど、V2アクションで提供できるより 高度な機能 のいくつかを利用できます。
Github アクションの変更の詳細については、更新された 使用ドキュメント を読むか、 Docker と Github Actions のベストプラクティスに関するブログ投稿を確認してください。V1 から V2 への変更について質問やフィードバックがある場合は、 リポジトリ または 公開ロードマップでチケットを発行してください