Halaman ini menjelaskan cara mengonfigurasi Cloud Build untuk menyimpan artefak yang dibangun di repositori Artifact Registry.
Sebelum memulai
- Jika repositori target tidak ada di Artifact Registry, buat repositori baru.
Jika Cloud Build dan repositori Anda berada dalam project yang berbeda, atau jika Anda menggunakan akun layanan yang ditentukan pengguna untuk menjalankan build, berikan peran Artifact Registry Writer ke akun layanan build di project yang memiliki repositori.
Akun layanan Cloud Build default memiliki akses untuk melakukan tindakan berikut dengan repositori dalam project Google Cloud yang sama:
- Mengupload dan mendownload artefak
- Buat repositori gcr.io di Artifact Registry
Mengonfigurasi build Docker
Setelah memberikan izin ke repositori target, Anda siap untuk mengonfigurasi build.
Untuk mengonfigurasi build Anda:
Di file konfigurasi build, tambahkan langkah untuk membangun dan memberi tag pada image.
steps: - name: 'gcr.io/cloud-builders/docker' args: [ 'build', '-t', '${_LOCATION}-docker.pkg.dev/$PROJECT_ID/${_REPOSITORY}/${_IMAGE}', '.' ] images: - '${_LOCATION}-docker.pkg.dev/$PROJECT_ID/${_REPOSITORY}/${_IMAGE}'
Cuplikan ini menggunakan substitusi Cloud Build. Pendekatan ini berguna jika Anda ingin menggunakan file konfigurasi build yang sama untuk mengirim image ke repositori untuk lingkungan yang berbeda, seperti pengujian, staging, atau produksi.
${_LOCATION}
,${_REPOSITORY}
, dan${_IMAGE}
adalah substitusi yang ditentukan pengguna untuk lokasi repositori, nama repositori, dan image. Anda menentukan nilai untuk variabel-variabel ini pada waktu build.$PROJECT_ID
adalah penggantian default yang diselesaikan oleh Cloud Build dengan project ID Google Cloud untuk build.- Jika Anda menjalankan perintah
gcloud builds submit
, Cloud Build akan menggunakan project ID aktif dalam sesi gcloud. - Jika Anda menggunakan pemicu build, Cloud Build akan menggunakan ID project tempat Cloud Build berjalan.
Atau, Anda dapat menggunakan substitusi yang ditentukan pengguna, bukan
$PROJECT_ID
, sehingga Anda dapat menentukan project ID pada waktu build.- Jika Anda menjalankan perintah
Setelah siap menjalankan build, tentukan nilai untuk substitusi yang ditentukan pengguna. Misalnya, perintah ini menggantikan:
us-east1
untuk lokasi repositorimy-repo
untuk nama repositorimy-image
untuk nama gambar
gcloud builds submit --config=cloudbuild.yaml \ --substitutions=_LOCATION="us-east1",_REPOSITORY="my-repo",_IMAGE="my-image" .
Mengonfigurasi build Go
Setelah memberikan izin ke repositori target, Anda siap untuk mengonfigurasi build. Petunjuk berikut menjelaskan cara mengonfigurasi build Anda untuk mengupload modul Go ke repositori Go.
Untuk mengonfigurasi build Anda:
Untuk mengupload modul Go ke repositori Go di build Anda, tambahkan langkah-langkah berikut ke file konfigurasi build Anda:
steps: - name: gcr.io/cloud-builders/gcloud args: - 'artifacts' - 'go' - 'upload' - '--project=$PROJECT_ID' - '--location=${_LOCATION}' - '--repository=${_REPOSITORY}' - '--module-path=${_MODULE_PATH}' - '--version=$TAG_NAME'
File konfigurasi build menyertakan substitusi Cloud Build. Pendekatan ini berguna jika Anda ingin menggunakan file konfigurasi build yang sama untuk mengupload paket ke repositori untuk lingkungan yang berbeda, seperti pengujian, staging, atau produksi.
${_LOCATION}
,${_REPOSITORY}
, dan${_MODULE_PATH}
adalah substitusi yang ditentukan pengguna untuk lokasi repositori, nama repositori, dan jalur modul. Anda menentukan nilai untuk variabel-variabel ini pada waktu build.$PROJECT_ID
dan$TAG_NAME
adalah substitusi default yang diganti oleh Cloud Build dengan:$PROJECT_ID
diganti dengan project ID Google Cloud untuk build.- Jika Anda menjalankan perintah
gcloud builds submit
, Cloud Build akan menggunakan project ID aktif dalam sesi gcloud. - Jika Anda menggunakan pemicu build, Cloud Build akan menggunakan ID project tempat Cloud Build berjalan.
Atau, Anda dapat menggunakan substitusi yang ditentukan pengguna, bukan
$PROJECT_ID
, sehingga Anda dapat menentukan project ID pada waktu build.- Jika Anda menjalankan perintah
$TAG_NAME
diganti dengan nama tag Anda untuk mendukung konvensi Go penggunaan tag Git sebagai nomor versi.
Untuk menginstal paket dari repositori Go, tambahkan langkah-langkah berikut ke file konfigurasi build Anda ke:
- Tambahkan endpoint Artifact Registry regional di lokasi repositori Anda ke file
.netrc
. - Jalankan alat pembantu kredensial untuk memperbarui token OAuth.
- Jalankan perintah
go run
. Anda juga dapat mengubahnya menjadigo build
untuk mengompilasi modul,go test
untuk menjalankan pengujian, ataugo mod tidy
untuk mendownload dependensi.
Untuk langkah perintah
go
,GOPROXY
disetel ke repositori Artifact Registry yang menghosting dependensi pribadi. Anda dapat menambahkan proxy publik ke daftarGOPROXY
yang dipisahkan koma jika modul memiliki dependensi publik.steps: - name: golang entrypoint: go args: ['run', 'github.com/GoogleCloudPlatform/artifact-registry-go-tools/cmd/auth@v0.1.0', 'add-locations', '--locations=${_LOCATION}'] env: # Set GOPROXY to the public proxy to pull the credential helper tool - 'GOPROXY=https://proxy.golang.org' - name: golang entrypoint: go args: ['run', 'github.com/GoogleCloudPlatform/artifact-registry-go-tools/cmd/auth@v0.1.0', 'refresh'] env: # Set GOPROXY to the public proxy to pull the credential helper tool - 'GOPROXY=https://proxy.golang.org' - name: golang entrypoint: go args: ['run', '.'] env: - 'GOPROXY=https://${_LOCATION}-go.pkg.dev/${_PROJECT_ID}/${_REPOSITORY}' options: env: # Disable GO sumdb checks for private modules. - 'GONOSUMDB=${_MODULE_PATH}'
- Tambahkan endpoint Artifact Registry regional di lokasi repositori Anda ke file
Setelah siap menjalankan build, tentukan nilai untuk substitusi yang ditentukan pengguna. Misalnya, perintah ini menggantikan:
us-east1
untuk lokasi repositorimy-project
untuk project IDmy-repo
untuk nama repositoriexample.com/greetings
untuk jalur modul
gcloud builds submit --config=cloudbuild.yaml \ --substitutions=_LOCATION="us-east1",_PROJECT_ID="my-project",_REPOSITORY="my-repo",_MODULE_PATH="example.com/greetings" .
Mengonfigurasi build Java
Setelah memberikan izin ke repositori target, Anda siap untuk mengonfigurasi build. Petunjuk berikut menjelaskan cara mengonfigurasi build Anda untuk mengupload paket Java ke repositori Maven.
Untuk mengonfigurasi build Anda:
Siapkan autentikasi untuk Maven. Pastikan Anda menentukan project target dan repositori yang benar di file
pom.xml
Anda.Di file konfigurasi build Cloud Build, tambahkan langkah untuk mengupload paket dengan Maven:
steps: - name: gcr.io/cloud-builders/mvn args: ['deploy']
Setelah file konfigurasi build Anda sudah siap, mulai build Anda dengan perintah berikut:
gcloud builds submit
Mengonfigurasi build Node.js
Setelah memberikan izin ke repositori target, Anda siap untuk mengonfigurasi build. Petunjuk berikut menjelaskan cara mengonfigurasi build Anda untuk mengupload paket Node.js ke repositori npm.
Untuk mengonfigurasi build Anda:
Tambahkan repositori Artifact Registry ke file
.npmrc
di project Node.js Anda. File ini terletak di direktori yang berisi filepackage.json
Anda.@SCOPE:registry=https://LOCATION-npm.pkg.dev/PROJECT_ID/REPOSITORY //LOCATION-npm.pkg.dev/PROJECT_ID/REPOSITORY:always-auth=true
- SCOPE-NAME adalah nama cakupan npm yang akan dikaitkan dengan repositori. Menggunakan cakupan akan memastikan bahwa Anda selalu memublikasikan dan menginstal paket dari repositori yang benar.
- PROJECT_ID adalah ID project Google Cloud Anda.
- LOCATION adalah lokasi regional atau multi-regional dari repositori.
- REPOSITORY adalah nama repositori.
Tambahkan skrip ke file
package.json
di project Anda yang memperbarui token akses untuk autentikasi dengan repositori."scripts": { "artifactregistry-login": "npx google-artifactregistry-auth" }
Di file konfigurasi build, tambahkan langkah untuk mengupload paket ke repositori.
steps: - name: gcr.io/cloud-builders/npm args: ['run', 'artifactregistry-login'] - name: gcr.io/cloud-builders/npm args: ['publish', '${_PACKAGE}']
${_PACKAGE}
adalah substitusi Cloud Build yang mewakili direktori project Node.js Anda. Anda dapat menentukan direktori saat menjalankan perintah untuk menjalankan build.Misalnya, perintah ini mengupload paket dari direktori bernama
src
:gcloud builds submit --config=cloudbuild.yaml \ --substitutions=_PACKAGE="src" .
Mengonfigurasi build Python
Setelah memberikan izin ke repositori target, Anda siap untuk mengonfigurasi build. Petunjuk berikut menjelaskan cara mengonfigurasi build Anda untuk mengupload paket Python ke repositori Python dan menginstal paket menggunakan pip.
Untuk mem-build dan memasukkan aplikasi Python ke dalam container, lalu mendorongnya ke repositori Docker, lihat Membangun aplikasi Python dalam dokumentasi Cloud Build.
Untuk mengonfigurasi build Anda:
Di direktori yang berisi file konfigurasi build Cloud Build Anda, buat file bernama
requirements.txt
dengan dependensi berikut:twine keyrings.google-artifactregistry-auth
- Twine digunakan untuk mengupload paket ke Artifact Registry.
- keyrings.google-artifactregistry-auth adalah backend keyring Artifact Registry yang menangani autentikasi dengan Artifact Registry untuk pip dan Twine.
Untuk mengupload paket Python ke repositori Python di build Anda, tambahkan langkah-langkah berikut ke file konfigurasi build:
steps: - name: python entrypoint: pip args: ["install", "-r", "requirements.txt", "--user"] - name: python entrypoint: python args: - '-m' - 'twine' - 'upload' - '--repository-url' - 'https://${_LOCATION}-python.pkg.dev/$PROJECT_ID/${_REPOSITORY}/' - 'dist/*'
Dalam cuplikan ini, langkah pertama akan menginstal backend keyring Twine dan Artifact Registry. Langkah kedua mengupload file Python yang telah Anda build di subdirektori
dist
. Sesuaikan jalur kerequirements.txt
dan file Python yang Anda buat jika tidak cocok dengan cuplikan.Jalur repositori mencakup substitusi Cloud Build. Pendekatan ini berguna jika Anda ingin menggunakan file konfigurasi build yang sama untuk mengupload paket ke repositori untuk lingkungan yang berbeda, seperti pengujian, staging, atau produksi.
${_LOCATION}
dan${_REPOSITORY}
adalah substitusi yang ditentukan pengguna untuk lokasi repositori, nama repositori, dan nama paket. Anda menentukan nilai untuk variabel ini pada waktu build.$PROJECT_ID
adalah penggantian default yang diselesaikan oleh Cloud Build dengan project ID Google Cloud untuk build.- Jika Anda menjalankan perintah
gcloud builds submit
, Cloud Build akan menggunakan project ID aktif dalam sesi gcloud. - Jika Anda menggunakan pemicu build, Cloud Build akan menggunakan ID project tempat Cloud Build berjalan.
Atau, Anda dapat menggunakan substitusi yang ditentukan pengguna, bukan
$PROJECT_ID
, sehingga Anda dapat menentukan project ID pada waktu build.- Jika Anda menjalankan perintah
Untuk menginstal paket dari repositori Python, tambahkan langkah ke file konfigurasi build Anda yang menjalankan perintah
pip install
.steps: - name: python entrypoint: pip args: - 'install' - '--index-url' - 'https://${_LOCATION}-python.pkg.dev/$PROJECT_ID/${_REPOSITORY}/simple/' - '${_PACKAGE}' - '--verbose'
Cuplikan ini mencakup substitusi
${_PACKAGE}
tambahan untuk nama paket.Setelah siap menjalankan build, tentukan nilai untuk substitusi yang ditentukan pengguna. Misalnya, perintah ini menggantikan:
us-east1
untuk lokasi repositorimy-repo
untuk nama repositorimy-package
untuk nama paket
gcloud builds submit --config=cloudbuild.yaml \ --substitutions=_LOCATION="us-east1",_REPOSITORY="my-repo",_PACKAGE="my-package" .