正式なドキュメントは英語版であり、この日本語訳はAI支援翻訳により作成された参考用のものです。日本語訳の一部の内容は人間によるレビューがまだ行われていないため、翻訳のタイミングにより英語版との間に差異が生じることがあります。最新かつ正確な情報については、英語版をご参照ください。

チュートリアル: Google Artifact RegistryにプッシュするGitLabパイプラインを作成する

GitLabをGoogle Cloudに接続し、Compute Engine上のRunnerを使用して、Artifact RegistryにイメージをプッシュするGitLabパイプラインを作成する方法について説明します。

はじめる前

  1. このページのコマンドを実行するには、次のいずれかの開発環境でgcloud CLIをセットアップします:

  2. Google Cloudプロジェクトを作成または選択します。

    この手順で作成するリソースを保持する予定がない場合は、既存のプロジェクトを選択する代わりに、新しいGoogle Cloudプロジェクトを作成してください。これらの手順を完了したら、プロジェクトを削除して、プロジェクトに関連付けられているすべてのリソースを削除できます。

    Google Cloudプロジェクトを作成するには、次のコマンドを実行します:

    gcloud projects create PROJECT_ID

    PROJECT_IDを、作成するGoogle Cloudプロジェクトの名前に置き換えます。

  3. 作成したGoogle Cloudプロジェクトを選択します:

    gcloud config set project PROJECT_ID

    PROJECT_IDをGoogle Cloudプロジェクト名に置き換えます。

  4. Google Cloudプロジェクトで課金が有効になっていることを確認してください

  5. Compute EngineとArtifact RegistryのAPIを有効にします:

    gcloud services enable compute.googleapis.com artifactregistry.googleapis.com
  6. Google CloudワークロードアイデンティティフェデレーションとIAMポリシーの手順に従って、Google CloudとのGitLabインテグレーションをセットアップします。

  7. 標準モードのDocker形式のArtifact Registryリポジトリを作成します

  8. GitLabプロジェクトでGoogle Artifact Registryをセットアップするの手順に従って、Artifact RegistryリポジトリをGitLabプロジェクトに接続します。

GitLabリポジトリをクローンする

  1. SSHまたはHTTPSを使用して、GitLabリポジトリを作業環境にクローンするには、Gitリポジトリをローカルコンピューターにクローンするの手順に従ってください。

  2. ローカルShellで作業している場合は、Terraformをインストールします。TerraformはCloud Shellに既にインストールされています。

Dockerfileを作成する

  1. クローンしたリポジトリに、Dockerfileという名前の新しいファイルを作成します。

  2. 次の内容をDockerfileにコピーして貼り付けます。

    # Dockerfile for test purposes. Generates a new random image in every build.
    FROM alpine:3.15.11
    RUN dd if=/dev/urandom of=random bs=10 count=1
  3. DockerfileをGitに追加し、コミットして、GitLabリポジトリにプッシュします。

    git add Dockerfile
    git commit -m "add dockerfile"
    git push

    ユーザー名とパーソナルアクセストークンを入力するように求められます。

Dockerfileはビルドごとに新しいランダムなイメージを生成し、テストのみを目的としています。

Google Compute EngineでCIRunnerの継続的インテグレーション(CI)を有効にする

GitLab Runnerは、GitLab CICI/CDと連携してパイプラインでジョブを実行するアプリケーションです。Google Cloud上のGitLabインテグレーションは、Compute Engine上でオートスケールRunnerフリートの設定を支援し、一時的なRunnerを作成して複数のジョブを同時に実行するRunnerマネージャーを提供します。

オートスケールRunnerフリートをセットアップするには、Google CloudでCI/CDジョブを実行するようにGitLab Runnerをセットアップするの手順に従ってください。CI/CDジョブを実行するRunnerの環境としてGoogle Cloudを選択し、残りの設定の詳細を入力します。

Runnerの詳細を入力したら、セットアップ手順に従って、Google Cloudプロジェクトを設定し、GitLab Runnerをインストールして登録し、提供されているterraformを作業環境に適用して設定を適用します。

パイプラインを作成する

Dockerイメージをビルドし、GitLabコンテナレジストリにプッシュし、イメージをGoogle Artifact Registryにコピーするパイプラインを作成します。

  1. GitLabプロジェクトで、.gitlab-ci.ymlファイルを作成します。

  2. Dockerイメージをビルドし、GitLabコンテナレジストリにプッシュし、イメージをGoogle Artifact Registryにコピーするパイプラインを作成するには、.gitlab-ci.ymlファイルの内容を次のように変更します。

    例では、以下を置き換えます:

    • LOCATION: Google Artifact Registryリポジトリを作成したGoogle Cloudリージョン。
    • PROJECT: Google CloudプロジェクトID。
    • REPOSITORY: Google Artifact RegistryリポジトリのリポジトリID。
    stages:
      - build
      - deploy
    
    variables:
      GITLAB_IMAGE: $CI_REGISTRY_IMAGE:$CI_COMMIT_SHORT_SHA
    
    build-sample-image:
      image: docker:24.0.5-cli
      stage: build
      services:
        - docker:24.0.5-dind
      before_script:
        - docker login -u $CI_REGISTRY_USER -p $CI_REGISTRY_PASSWORD $CI_REGISTRY
      script:
        - docker build -t $GITLAB_IMAGE .
        - docker push $GITLAB_IMAGE
    
    include:
      - component: gitlab.com/google-gitlab-components/artifact-registry/upload-artifact-registry@0.1.0
        inputs:
          stage: deploy
          source: $GITLAB_IMAGE
          target: LOCATION-docker.pkg.dev/PROJECT/REPOSITORY/image:v1.0.0

このパイプラインは、Docker in Dockerを使用してイメージdocker:24.0.5をビルドし、GitLabコンテナレジストリに保存し、Google Artifact Registry GitLabコンポーネントを使用して、バージョンv1.0.0でGoogle Artifact Registryリポジトリにプッシュします。

アーティファクトを表示する

GitLabでアーティファクトを表示するには:

  1. GitLabプロジェクトの左側のサイドバーで、ビルド > アーティファクトを選択します。
  2. ビルドの詳細を表示するアーティファクトの名前を選択します。

Google Artifact Registryでアーティファクトを表示するには:

  1. Google Cloud Consoleでリポジトリページを開きます
  2. リンクされたリポジトリの名前を選択します。
  3. イメージの名前を選択して、バージョン名とタグを表示します。
  4. イメージバージョンの名前を選択して、バージョンのビルド、プル、マニフェスト情報を表示します。

クリーンアップ

このページで使用されているリソースに対してGoogle Cloudアカウントに料金が発生しないようにするには、Google Cloudプロジェクトを削除します。プロジェクトを保持する場合は、Google Artifact Registryリポジトリを削除できます。

GitLabとGoogle Artifact Registryの価格とプロジェクト管理については、次のリソースを参照してください:

Google Artifact Registryリポジトリを削除する

Google Cloudプロジェクトを保持し、Google Artifact Registryリポジトリリソースのみを削除する場合は、このセクションの手順に従ってください。Google Cloudプロジェクト全体を削除する場合は、プロジェクトを削除するの手順に従ってください。

リポジトリを削除する前に、保持するイメージが別の場所で使用可能になっていることを確認してください。

リポジトリを削除するには、次のコマンドを実行します:

gcloud artifacts repositories delete REPOSITORY \
    --location=LOCATION

以下を置き換えてください:

  • REPOSITORYをGoogle Artifact RegistryリポジトリIDに置き換えます
  • LOCATIONをリポジトリの場所に置き換えます

Google Cloudプロジェクトを削除する

Caution(注意): プロジェクトを削除すると、次の影響があります:

  • Everything in the project is deleted(プロジェクト内のすべてが削除されます)。このドキュメントのタスクに既存のプロジェクトを使用した場合は、それを削除すると、プロジェクトで行った他の作業もすべて削除されます。
  • Custom project IDs are lost(カスタムプロジェクトIDが失われます)。このプロジェクトを作成したときに、将来使用するカスタムプロジェクトIDを作成した可能性があります。appspot.com URLなど、プロジェクトIDを使用するURLを保持するには、プロジェクト全体を削除する代わりに、プロジェクト内の選択したリソースを削除します。

複数のアーキテクチャ、チュートリアル、またはGoogle Cloudのクイックスタートチュートリアルを調査する場合は、プロジェクトを再利用すると、プロジェクトのクォータ制限を超えることを回避できます。

  1. Google Cloud Consoleで、Manage resources(リソースの管理)ページに移動します。
  2. プロジェクトリストで、削除するプロジェクトを選択し、削除を選択します。
  3. ダイアログで、プロジェクトIDを入力し、Shut down(シャットダウン)を選択してプロジェクトを削除します。