Docker v2 Github Action が一般公開されました

Docker は、V2 Github Action の GA を発表できることを嬉しく思います。 私たちは過去数か月間、 @crazy-max と協力しており、既存のGithubアクションを改善する方法について、より広いコミュニティからフィードバックを得ています。 私たちは今、単一のアクションから、より明確な分割と高度なオプションセットに移行し、ビルド&プッシュだけでなく、複数のアーキテクチャやビルドキャッシュなどの機能もサポートできるようになりました。

V2アクションの出現による大きな変化は、DockerがGithubで提供しているアクションの数の増加でもあります。 このよりモジュール化されたアプローチとGithub Actionsのパワーにより、元のアクションに最小限のUX変更を加え、さらに多くの機能を追加することができました。

Docker v2 github action

これらの事前構成手順のすべてを実際に必要とせず、前のワークフローと同じワークフローを提供するために引き続き使用できる、よりメタなビルド/プッシュアクションがまだあります。 アップグレードする唯一の変更は、ログインを新しいステップに分割し、ビルダーをセットアップするステップがあることです。 

  -
        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 への変更について質問やフィードバックがある場合は、 リポジトリ または 公開ロードマップでチケットを発行してください