[A-00172]Google Cloud ArtifactRegistryの使い方

Artifact-Regstryの使い方についてまとめ

・Javaアーティファクトの登録

Javaで適当なアーティファクトを作成して登録してみます。

まず下記のURLからArtifact-Registry APIを有効にします。

https://console.cloud.google.com/flows/enableapi?apiid=artifactregistry.googleapis.com&hl=ja&_ga=2.203006225.1447420327.1703875905-133574885.1688480522

・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に登録したいと思います。

サイトはこちら

https://start.spring.io/

下記のように適当なプロジェクトをジェネレートします。

下記の通り、 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

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

*