チュートリアル: Google Artifact RegistryにプッシュするGitLabパイプラインを作成する
GitLabをGoogle Cloudに接続し、Compute Engine上のRunnerを使用して、Artifact RegistryにイメージをプッシュするGitLabパイプラインを作成する方法について説明します。
はじめる前
このページのコマンドを実行するには、次のいずれかの開発環境で
gcloudCLIをセットアップします:Google Cloudプロジェクトを作成または選択します。
この手順で作成するリソースを保持する予定がない場合は、既存のプロジェクトを選択する代わりに、新しいGoogle Cloudプロジェクトを作成してください。これらの手順を完了したら、プロジェクトを削除して、プロジェクトに関連付けられているすべてのリソースを削除できます。
Google Cloudプロジェクトを作成するには、次のコマンドを実行します:
gcloud projects create PROJECT_IDPROJECT_IDを、作成するGoogle Cloudプロジェクトの名前に置き換えます。作成したGoogle Cloudプロジェクトを選択します:
gcloud config set project PROJECT_IDPROJECT_IDをGoogle Cloudプロジェクト名に置き換えます。Compute EngineとArtifact RegistryのAPIを有効にします:
gcloud services enable compute.googleapis.com artifactregistry.googleapis.comGoogle CloudワークロードアイデンティティフェデレーションとIAMポリシーの手順に従って、Google CloudとのGitLabインテグレーションをセットアップします。
GitLabプロジェクトでGoogle Artifact Registryをセットアップするの手順に従って、Artifact RegistryリポジトリをGitLabプロジェクトに接続します。
GitLabリポジトリをクローンする
SSHまたはHTTPSを使用して、GitLabリポジトリを作業環境にクローンするには、Gitリポジトリをローカルコンピューターにクローンするの手順に従ってください。
ローカルShellで作業している場合は、Terraformをインストールします。TerraformはCloud Shellに既にインストールされています。
Dockerfileを作成する
クローンしたリポジトリに、
Dockerfileという名前の新しいファイルを作成します。次の内容を
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=1Dockerfileを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にコピーするパイプラインを作成します。
GitLabプロジェクトで、
.gitlab-ci.ymlファイルを作成します。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でアーティファクトを表示するには:
- GitLabプロジェクトの左側のサイドバーで、ビルド > アーティファクトを選択します。
- ビルドの詳細を表示するアーティファクトの名前を選択します。
Google Artifact Registryでアーティファクトを表示するには:
- Google Cloud Consoleでリポジトリページを開きます。
- リンクされたリポジトリの名前を選択します。
- イメージの名前を選択して、バージョン名とタグを表示します。
- イメージバージョンの名前を選択して、バージョンのビルド、プル、マニフェスト情報を表示します。
クリーンアップ
このページで使用されているリソースに対して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のクイックスタートチュートリアルを調査する場合は、プロジェクトを再利用すると、プロジェクトのクォータ制限を超えることを回避できます。
- Google Cloud Consoleで、Manage resources(リソースの管理)ページに移動します。
- プロジェクトリストで、削除するプロジェクトを選択し、削除を選択します。
- ダイアログで、プロジェクトIDを入力し、Shut down(シャットダウン)を選択してプロジェクトを削除します。
関連トピック
- GitLab CI/CDの設定ファイルを最適化する方法を学びます。
- Google Cloud上のGitLabインテグレーションが、IAMとワークロードアイデンティティフェデレーションを使用してGoogle Cloudへのアクセス制御を制御する方法については、IAMによるアクセス制御を参照してください。