[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
コメントを残す