[A-00172]Google Cloud ArtifactRegistryの使い方
Artifact-Regstryの使い方についてまとめ
・Javaアーティファクトの登録
Javaで適当なアーティファクトを作成して登録してみます。
まず下記のURLからArtifact-Registry APIを有効にします。
・gcloudコマンドでArtifact Registryにリポジトリを作成する
gcloud artifacts repositories create quickstart-java-repo --repository-format=maven \
> --location=asia-northeast1 --description="Java artifact repository"
作成されると下記のようなログが出力されます。
MacBook-Pro:~$ gcloud artifacts repositories create quickstart-java-repo --repository-format=maven \
> --location=asia-northeast1 --description="Java artifact repository"
Create request issued for: [quickstart-java-repo]
Waiting for operation [projects/xxxxx/locations/asia-northeast1/operations/c0a6bbee-fdcb-45aa-9042-577879956350] to complete...done.
Created repository [quickstart-java-repo].
下記の通り、作成されます。

・上記で作成したリポジトリとロケーションをデフォルト設定にします。
gcloud config set artifacts/repository quickstart-java-repo
gcloud config set artifacts/location asia-northeast1
・Javaプロジェクトを用意する。
今回はSpring公式のInitializerからspringbootプロジェクトを作成してそれをArtifact Registryに登録したいと思います。
サイトはこちら
下記のように適当なプロジェクトをジェネレートします。

下記の通り、 IDE(ここではVSCode)に取り込んだら準備完了。mvn clean installを実行してbuild successすれば問題なしです。

・pom.xmlを編集する
下記のgcloudコマンドを実行してartifact-registryにデプロイするplug-inを追加します。
gcloud artifacts print-settings mvn
実行すると下記の通り、pom.xmlに追記するコードが出力されます。
MacBook-Pro:demo$ gcloud artifacts print-settings mvn
<!-- Insert following snippet into your pom.xml -->
<project>
<distributionManagement>
<snapshotRepository>
<id>artifact-registry</id>
<url>artifactregistry://asia-northeast1-maven.pkg.dev/xxxx/quickstart-java-repo</url>
</snapshotRepository>
<repository>
<id>artifact-registry</id>
<url>artifactregistry://asia-northeast1-maven.pkg.dev/xxxx/quickstart-java-repo</url>
</repository>
</distributionManagement>
<repositories>
<repository>
<id>artifact-registry</id>
<url>artifactregistry://asia-northeast1-maven.pkg.dev/xxxx/quickstart-java-repo</url>
<releases>
<enabled>true</enabled>
</releases>
<snapshots>
<enabled>true</enabled>
</snapshots>
</repository>
</repositories>
<build>
<extensions>
<extension>
<groupId>com.google.cloud.artifactregistry</groupId>
<artifactId>artifactregistry-maven-wagon</artifactId>
<version>2.2.0</version>
</extension>
</extensions>
</build>
</project>
pom.xmlに追記すると下記のようになります。
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>3.2.1</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<groupId>com.example</groupId>
<artifactId>demo</artifactId>
<version>0.0.1-SNAPSHOT</version>
<name>demo</name>
<description>Demo project for Spring Boot</description>
<properties>
<java.version>21</java.version>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
<extensions>
<extension>
<groupId>com.google.cloud.artifactregistry</groupId>
<artifactId>artifactregistry-maven-wagon</artifactId>
<version>2.2.0</version>
</extension>
</extensions>
</build>
<distributionManagement>
<snapshotRepository>
<id>artifact-registry</id>
<url>artifactregistry://asia-northeast1-maven.pkg.dev/xxxx/quickstart-java-repo</url>
</snapshotRepository>
<repository>
<id>artifact-registry</id>
<url>artifactregistry://asia-northeast1-maven.pkg.dev/xxxx/quickstart-java-repo</url>
</repository>
</distributionManagement>
<repositories>
<repository>
<id>artifact-registry</id>
<url>artifactregistry://asia-northeast1-maven.pkg.dev/xxxx/quickstart-java-repo</url>
<releases>
<enabled>true</enabled>
</releases>
<snapshots>
<enabled>true</enabled>
</snapshots>
</repository>
</repositories>
</project>
上記のpom.xmlで、mvn deployを実行します。

上記を実行すると下記の通り、google cloud上のartifact registryに資材が登録されます。

demoは以上となります。
・Docker イメージの登録
dockerイメージをArtifactRegistryに登録してみます。
まず下記のコマンドでdockerリポジトリをartifact registryに作成します。
gcloud artifacts repositories create quickstart-docker-repo --repository-format=docker \
> --location=asia-northeast1 --description="Docker repos"
成功すると下記のようにログが出力されます。
MacBook-Pro:prj1$ gcloud artifacts repositories create quickstart-docker-repo --repository-format=docker \
> --location=asia-northeast1 --description="Docker repos"
Create request issued for: [quickstart-docker-repo]
Waiting for operation [projects/xxxx/locations/asia-northeast1/operations/4b422ae2-4a64-4279-bcdf-aea966be5e83] to complete...done.
Created repository [quickstart-docker-repo].
下記の通り、google cloud上に作成されます。

次に下記のコマンドでgcloudのdocker認証を通します。
gcloud auth configure-docker \
asia-northeast1-docker.pkg.dev
次にartifact registryにpushする適当なdockerのイメージをpullします。
docker pull us-docker.pkg.dev/google-samples/containers/gke/hello-app:1.0
ちゃんとローカルのイメージに保存されているか確認するには下記のコマンドを実行
docker image ls
次にdockerイメージをartifact registryにpushします。
リポジトリにタグ付けを行います。
docker tag us-docker.pkg.dev/google-samples/containers/gke/hello-app:1.0 asia-northeast1-docker.pkg.dev/xxxx/quickstart-docker-repo/quickstart-image:tag1
次にdockerイメージをpushします。
docker push asia-northeast1-docker.pkg.dev/aeristest-404517/quickstart-docker-repo/quickstart-image:tag1
上記が完了したら下記の通り、artifact registry上にdocker-imageができています。

試しに下記のコマンドでpullしてみます。
docker pull asia-northeast1-docker.pkg.dev/aeristest-404517/quickstart-docker-repo/quickstart-image:tag1
うまく実行されれば問題なく登録できたことになります。
作成したdocker-reposは不要なので削除します。
gcloud artifacts repositories delete quickstart-docker-repo --location=asia-northeast1
・Appendix
公式ドキュメントはこちら
https://cloud.google.com/artifact-registry/docs/java/store-java?hl=ja#gcloud
コメントを残す