マルチアーキテクチャビルド、GitLab CIはどうですか?

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 とエンジンのバージョンを示すビルド出力が生成されます。 

Gitlab ci 1

次に、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プラットフォームの両方用にビルドされます。

Gitlab ci 2

最後の手順では、イメージを Docker ハブに保存します。 これを行うには、書き込みアクセスを取得するために Docker Hubからのアクセストークン が必要になります。

Gitlab ci 3

作成したら、[ 変数] セクションで プロジェクトの CI/CD 設定 を設定する必要があります。

次に、GitLab CIに変数を追加してDOCKER_USERNAMEDOCKER_PASSWORD、ログインして画像をプッシュできるようにします。

Gitlab ci 4

これが完了したら、次のようにログインステップとオプションを --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 .

そして出来上がり、コードベースに変更を加えるたびにマルチアーチイメージを作成できるようになりました。