GitHub Actions を使用してマルチアーキテクチャイメージを構築する方法を見てきた 前回の記事 に続いて、別の CI を使用して同じことを行う方法を示します。 この記事では、GitLab の一部である GitLab CI の使用方法を紹介します。
GitLab CI を使用してイメージの構築を開始するには、まずリポジトリのルートにファイルを作成し .gitlab-ci.yml
、コミットしてプッシュする必要があります。
image: docker:stable
variables:
DOCKER_HOST: tcp://docker:2375/
DOCKER_DRIVER: overlay2
services:
- docker:dind
build:
stage: build
script:
- docker version
これにより、Docker CLI とエンジンのバージョンを示すビルド出力が生成されます。
次に、Docker buildxをインストールします。 GitLabCI はコンテナ内のすべてを実行し、このコンテナを起動する任意のイメージを使用するため、 CircleCI で使用したもののように、buildx がプレインストールされたイメージを使用できます。 また、CircleCI に関しては、 ビルダーインスタンスを開始する必要があります。
image: jdrouet/docker-with-buildx:stable
variables:
DOCKER_HOST: tcp://docker:2375/
DOCKER_DRIVER: overlay2
services:
- docker:dind
build:
stage: build
script:
- docker buildx create --use
- docker buildx build --platform linux/arm/v7,linux/arm64/v8,linux/amd64 --tag your-username/multiarch-example:gitlab .
これで、イメージはARMプラットフォームとx86プラットフォームの両方用にビルドされます。
最後の手順では、イメージを Docker ハブに保存します。 これを行うには、書き込みアクセスを取得するために Docker Hubからのアクセストークン が必要になります。
作成したら、[ 変数] セクションで プロジェクトの CI/CD 設定 を設定する必要があります。
次に、GitLab CIに変数を追加してDOCKER_USERNAME
DOCKER_PASSWORD
、ログインして画像をプッシュできるようにします。
これが完了したら、次のようにログインステップとオプションを --push
buildxコマンドに追加できます。
build:
stage: build
script:
- docker login -u "$DOCKER_USERNAME" -p "$DOCKER_PASSWORD"
- docker buildx create --use
- docker buildx build --push --platform linux/arm/v7,linux/arm64/v8,linux/386,linux/amd64 --tag your-username/multiarch-example:gitlab .
そして出来上がり、コードベースに変更を加えるたびにマルチアーチイメージを作成できるようになりました。