1. Ringkasan
Seiring dengan evolusi Container Registry, Artifact Registry kini menjadi tempat tunggal bagi organisasi Anda untuk mengelola image container dan paket bahasa (seperti Maven dan npm). Artifact Registry sepenuhnya terintegrasi dengan alat dan runtime Google Cloud serta dilengkapi dengan dukungan untuk pengelolaan dependensi berbasis bahasa untuk digunakan dengan alat seperti npm dan Maven. Hal ini memudahkan pengintegrasian dengan alat CI/CD untuk menyiapkan pipeline otomatis.
Lab ini akan memandu Anda mempelajari beberapa fitur yang tersedia di Artifact Registry.
Yang akan Anda pelajari
Apa tujuan pembelajaran lab ini?
- Membuat repositori untuk Container dan Paket Bahasa
- Mengelola image container dengan Artifact Registry
- Mengonfigurasi Maven untuk Menggunakan Artifact Registry untuk Dependensi Java
2. Penyiapan dan Persyaratan
Penyiapan lingkungan mandiri
- Login ke Google Cloud Console dan buat project baru atau gunakan kembali project yang sudah ada. Jika belum memiliki akun Gmail atau Google Workspace, Anda harus membuatnya.



- Project name adalah nama tampilan untuk peserta project ini. String ini adalah string karakter yang tidak digunakan oleh Google API. Anda dapat memperbaruinya kapan saja.
- Project ID bersifat unik di semua project Google Cloud dan tidak dapat diubah (tidak dapat diubah setelah ditetapkan). Cloud Console otomatis membuat string unik; biasanya Anda tidak mementingkan kata-katanya. Di sebagian besar codelab, Anda harus merujuk Project ID-nya (biasanya diidentifikasi sebagai
PROJECT_ID). Jika tidak suka dengan ID yang dibuat, Anda dapat membuat ID acak lainnya. Atau, Anda dapat mencobanya sendiri dan melihat apakah ID tersebut tersedia. ID tidak dapat diubah setelah langkah ini dan akan tetap ada selama durasi project. - Sebagai informasi, ada nilai ketiga, Project Number yang digunakan oleh beberapa API. Pelajari lebih lanjut ketiga nilai ini di dokumentasi.
- Selanjutnya, Anda harus mengaktifkan penagihan di Konsol Cloud untuk menggunakan resource/API Cloud. Menjalankan operasi dalam codelab ini seharusnya tidak memerlukan banyak biaya, bahkan mungkin tidak sama sekali. Guna mematikan resource agar tidak menimbulkan penagihan di luar tutorial ini, Anda dapat menghapus resource yang dibuat atau menghapus seluruh project. Pengguna baru Google Cloud memenuhi syarat untuk mengikuti program Uji Coba Gratis senilai $300 USD.
Menyiapkan gcloud
Di Cloud Shell, tetapkan project ID dan nomor project Anda. Simpan sebagai variabel PROJECT_ID dan PROJECT_NUMBER.
export PROJECT_ID=$(gcloud config get-value project)
export PROJECT_NUMBER=$(gcloud projects describe $PROJECT_ID --format='value(projectNumber)')
Mengaktifkan Layanan Google
gcloud services enable \
cloudresourcemanager.googleapis.com \
container.googleapis.com \
artifactregistry.googleapis.com \
containerregistry.googleapis.com \
containerscanning.googleapis.com
Mendapatkan kode sumber
Kode sumber untuk lab ini terletak di organisasi GoogleCloudPlatform di GitHub. Buat clone dengan perintah di bawah, lalu ubah ke direktori.
git clone https://github.com/GoogleCloudPlatform/cloud-code-samples/
3. Menggunakan image container
Buat repositori Docker di Artifact Registry.
Artifact Registry mendukung pengelolaan image container dan paket bahasa. Jenis artefak yang berbeda memerlukan spesifikasi yang berbeda. Misalnya, permintaan untuk dependensi Maven berbeda dengan permintaan untuk dependensi Node.
Untuk mendukung spesifikasi API yang berbeda, Artifact Registry perlu mengetahui format yang Anda inginkan untuk diikuti oleh respons API. Untuk melakukannya, Anda akan membuat repositori dan meneruskan tanda --repository-format yang menunjukkan jenis repositori yang diinginkan
Dari Cloud Shell, jalankan perintah berikut untuk membuat repositori untuk image Docker:
gcloud artifacts repositories create container-dev-repo --repository-format=docker \
--location=us-central1 --description="Docker repository for Container Dev Workshop"
Klik Authorize jika perintah otorisasi Cloud Shell muncul
Buka Konsol Google Cloud - Artifact Registry - Repositories dan perhatikan repositori Docker yang baru dibuat bernama container-dev-repo. Jika Anda mengkliknya, Anda akan melihat bahwa repositori tersebut kosong saat ini
Mengonfigurasi autentikasi Docker ke Artifact Registry
Saat terhubung ke Artifact Registry, kredensial diperlukan untuk memberikan akses. Daripada menyiapkan kredensial terpisah, Docker dapat dikonfigurasi untuk menggunakan kredensial gcloud Anda dengan lancar.
Dari Cloud Shell, jalankan perintah berikut untuk mengonfigurasi Docker agar menggunakan Google Cloud CLI untuk mengautentikasi permintaan ke Artifact Registry di region us-central1:
gcloud auth configure-docker us-central1-docker.pkg.dev
Perintah akan meminta konfirmasi untuk mengubah konfigurasi docker Cloud Shell, tekan enter.
Mempelajari Aplikasi sampel
Aplikasi contoh disediakan di repositori git yang Anda clone pada langkah sebelumnya. Ubah ke direktori java dan tinjau kode aplikasi.
cd cloud-code-samples/java/java-hello-world
Folder ini berisi contoh aplikasi Java yang merender halaman web sederhana: selain berbagai file yang tidak relevan untuk lab khusus ini, folder ini berisi kode sumber, di folder src, dan Dockerfile yang akan kita gunakan untuk membangun image container secara lokal.
Membangun Image Container
Sebelum dapat menyimpan image container di Artifact Registry, Anda harus membuatnya terlebih dahulu.
Jalankan perintah berikut untuk membangun image container dan memberinya tag dengan benar untuk mengirimkannya ke repositori Anda pada langkah berikutnya:
docker build -t us-central1-docker.pkg.dev/$PROJECT_ID/container-dev-repo/java-hello-world:tag1 .
Mengirim Image Container ke Artifact Registry
Jalankan perintah berikut untuk mengirim image container ke repositori yang dibuat sebelumnya:
docker push us-central1-docker.pkg.dev/$PROJECT_ID/container-dev-repo/java-hello-world:tag1
Meninjau image di Artifact Registry
Buka Konsol Cloud - Artifact Registry - Repositories Google. Klik container-dev-repo dan periksa apakah image java-hello-world ada di sana. Klik gambar dan perhatikan gambar yang diberi tag tag1. Anda dapat melihat bahwa Pemindaian Kerentanan sedang berjalan atau sudah selesai dan jumlah kerentanan yang terdeteksi terlihat.

Klik jumlah kerentanan dan Anda akan melihat daftar kerentanan yang terdeteksi dalam image, dengan nama buletin CVE dan tingkat keparahan. Anda dapat mengklik LIHAT pada setiap kerentanan yang tercantum untuk mendapatkan detail selengkapnya:

4. Menggunakan paket bahasa
Di bagian ini, Anda akan melihat cara menyiapkan repositori Java Artifact Registry dan mengupload paket ke repositori tersebut, serta memanfaatkannya di berbagai aplikasi.
Membuat repositori paket Java
Dari Cloud Shell, jalankan perintah berikut untuk membuat repositori artefak Java:
gcloud artifacts repositories create container-dev-java-repo \
--repository-format=maven \
--location=us-central1 \
--description="Java package repository for Container Dev Workshop"
Klik Authorize jika perintah otorisasi Cloud Shell muncul
Buka Konsol Google Cloud - Artifact Registry - Repositories dan perhatikan repositori Maven yang baru dibuat dengan nama container-dev-java-repo. Jika Anda mengkliknya, Anda akan melihat bahwa repositori tersebut kosong saat ini.
Menyiapkan autentikasi ke Artifact Repository
Gunakan perintah berikut untuk mengupdate lokasi terkenal untuk Kredensial Default Aplikasi (ADC) dengan kredensial akun pengguna Anda sehingga helper kredensial Artifact Registry dapat melakukan autentikasi menggunakan kredensial tersebut saat terhubung dengan repositori:
gcloud auth login --update-adc
Mengonfigurasi Maven untuk Artifact Registry
Jalankan perintah berikut dari folder java-hello-world untuk membuka Cloud Shell Editor dan menambahkan folder aplikasi ke ruang kerjanya:
cloudshell workspace .
Aktifkan cookie pihak ketiga dengan mengklik "Situs sudah berfungsi?", lalu "Izinkan cookie".
Setelah Browser dimuat ulang, buka Cloud Shell dan jalankan perintah di atas sekali lagi untuk memuat folder aplikasi.


Buka pom.xml di Cloud Shell Editor, klik "Open Editor"

Buka terminal dari Cloud Shell Editor dan jalankan perintah berikut untuk mencetak konfigurasi repositori yang akan ditambahkan ke project Java Anda:
gcloud artifacts print-settings mvn \
--repository=container-dev-java-repo \
--location=us-central1
dan tambahkan setelan yang ditampilkan ke bagian yang sesuai dalam file pom.xml.
Tampilan Cloud Editor dengan terminal bawaan:

Perbarui bagian distributionManagement
<distributionManagement>
<snapshotRepository>
<id>artifact-registry</id>
<url>artifactregistry://us-central1-maven.pkg.dev/<PROJECT>/container-dev-java-repo</url>
</snapshotRepository>
<repository>
<id>artifact-registry</id>
<url>artifactregistry://us-central1-maven.pkg.dev/<PROJECT>/container-dev-java-repo</url>
</repository>
</distributionManagement>
Perbarui bagian repositories
<repositories>
<repository>
<id>artifact-registry</id>
<url>artifactregistry://us-central1-maven.pkg.dev/<PROJECT>/container-dev-java-repo</url>
<releases>
<enabled>true</enabled>
</releases>
<snapshots>
<enabled>true</enabled>
</snapshots>
</repository>
</repositories>
Perbarui ekstensi
<extensions>
<extension>
<groupId>com.google.cloud.artifactregistry</groupId>
<artifactId>artifactregistry-maven-wagon</artifactId>
<version>2.1.0</version>
</extension>
</extensions>
Berikut contoh file lengkap untuk referensi Anda. Pastikan untuk mengganti <PROJECT> dengan project ID Anda.
<?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 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<artifactId>hello-world</artifactId>
<packaging>jar</packaging>
<name>Cloud Code Hello World</name>
<description>Getting started with Cloud Code</description>
<version>1.0.0</version>
<distributionManagement>
<snapshotRepository>
<id>artifact-registry</id>
<url>artifactregistry://us-central1-maven.pkg.dev/<PROJECT>/container-dev-java-repo</url>
</snapshotRepository>
<repository>
<id>artifact-registry</id>
<url>artifactregistry://us-central1-maven.pkg.dev/<PROJECT>/container-dev-java-repo</url>
</repository>
</distributionManagement>
<repositories>
<repository>
<id>artifact-registry</id>
<url>artifactregistry://us-central1-maven.pkg.dev/<PROJECT>/container-dev-java-repo</url>
<releases>
<enabled>true</enabled>
</releases>
<snapshots>
<enabled>true</enabled>
</snapshots>
</repository>
</repositories>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.6.3</version>
</parent>
<properties>
<java.version>1.8</java.version>
<checkstyle.config.location>./checkstyle.xml</checkstyle.config.location>
</properties>
<build>
<plugins>
<plugin>
<groupId>com.google.cloud.tools</groupId>
<artifactId>jib-maven-plugin</artifactId>
<version>3.2.0</version>
</plugin>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-checkstyle-plugin</artifactId>
<version>3.1.2</version>
</plugin>
</plugins>
<extensions>
<extension>
<groupId>com.google.cloud.artifactregistry</groupId>
<artifactId>artifactregistry-maven-wagon</artifactId>
<version>2.1.0</version>
</extension>
</extensions>
</build>
<!-- The Spring Cloud GCP BOM will manage spring-cloud-gcp version numbers for you. -->
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-gcp-dependencies</artifactId>
<version>1.2.8.RELEASE</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-jetty</artifactId>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-webmvc</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-thymeleaf</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-gcp-starter-logging</artifactId>
</dependency>
</dependencies>
</project>
Mengupload paket Java Anda ke Artifact Registry
Dengan Artifact Registry yang dikonfigurasi di Maven, Anda kini dapat menggunakan Artifact Registry untuk menyimpan file Jar Java untuk digunakan oleh project lain di organisasi Anda.
Jalankan perintah berikut untuk mengupload paket Java Anda ke Artifact Registry:
mvn deploy
Memeriksa paket Java di Artifact Registry
Buka Konsol Cloud - Artifact Registry - Repositories Klik container-dev-java-repo, lalu periksa apakah artefak biner hello-world ada di sana:

5. Selamat!
Selamat, Anda telah menyelesaikan codelab!
Yang telah Anda pelajari
- Membuat Repositori untuk Container dan Paket Bahasa
- Mengelola image container dengan Artifact Registry
- Mengonfigurasi Maven untuk Menggunakan Artifact Registry untuk Dependensi Java
Pembersihan
Jalankan perintah berikut untuk menghapus project
gcloud projects delete $PROJECT_ID