Halaman ini menjelaskan cara mengonfigurasi Cloud Build untuk menyimpan artefak yang di-build 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 dalam project dengan repositori.
Akun layanan Cloud Build default memiliki akses untuk melakukan tindakan berikut dengan repositori dalam project Google Cloud yang sama:
- Mengupload dan mendownload artefak
- Membuat repositori gcr.io di Artifact Registry
Mengonfigurasi build Docker
Setelah memberikan izin ke repositori target, Anda siap untuk mengonfigurasi build.
Untuk mengonfigurasi build:
Dalam file konfigurasi build, tambahkan langkah untuk mem-build 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 mendorong image ke repositori untuk lingkungan yang berbeda, seperti pengujian, staging, atau produksi.
${_LOCATION}
,${_REPOSITORY}
, dan${_IMAGE}
adalah penggantian yang ditentukan pengguna untuk lokasi repositori, nama repositori, dan image. Anda menentukan nilai untuk variabel ini pada waktu build.$PROJECT_ID
adalah penggantian default yang di-resolve Cloud Build dengan project ID Google Cloud untuk build.- Jika Anda menjalankan perintah
gcloud builds submit
, Cloud Build akan menggunakan project ID yang aktif dalam sesi gcloud. - Jika Anda menggunakan pemicu build, Cloud Build akan menggunakan ID project tempat Cloud Build berjalan.
Atau, Anda dapat menggunakan penggantian yang ditentukan pengguna, bukan
$PROJECT_ID
, sehingga Anda dapat menentukan project ID pada waktu build.- Jika Anda menjalankan perintah
Jika Anda siap menjalankan build, tentukan nilai untuk penggantian yang ditentukan pengguna. Misalnya, perintah ini akan mengganti:
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 untuk mengupload modul Go ke repositori Go.
Untuk mengonfigurasi build:
Untuk mengupload modul Go ke repositori Go dalam build, tambahkan langkah-langkah berikut ke file konfigurasi build:
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 penggantian yang ditentukan pengguna untuk lokasi repositori, nama repositori, dan jalur modul. Anda menentukan nilai untuk variabel ini pada waktu build.$PROJECT_ID
dan$TAG_NAME
adalah substitusi default yang diganti oleh Cloud Build dengan yang berikut ini:$PROJECT_ID
diganti dengan project ID Google Cloud untuk build.- Jika Anda menjalankan perintah
gcloud builds submit
, Cloud Build akan menggunakan project ID yang aktif dalam sesi gcloud. - Jika Anda menggunakan pemicu build, Cloud Build akan menggunakan ID project tempat Cloud Build berjalan.
Atau, Anda dapat menggunakan penggantian 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 mendukungkonvensi Go menggunakan tag Git sebagai nomor versi.
Untuk menginstal paket dari repositori Go, tambahkan langkah-langkah berikut ke file konfigurasi build Anda untuk:
- Tambahkan endpoint Cloud Build regional di lokasi repositori Anda ke file
.netrc
. - Jalankan alat helper kredensial untuk memuat ulang 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
ditetapkan ke repositori Cloud Build 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 Cloud Build regional di lokasi repositori Anda ke file
Jika Anda siap menjalankan build, tentukan nilai untuk penggantian yang ditentukan pengguna. Misalnya, perintah ini akan mengganti:
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 untuk mengupload paket Java ke repositori Maven.
Untuk mengonfigurasi build:
Siapkan autentikasi untuk Maven. Pastikan Anda menentukan project dan repositori target yang benar dalam file
pom.xml
.Di file konfigurasi build Cloud Build, tambahkan langkah untuk mengupload paket dengan Maven:
steps: - name: gcr.io/cloud-builders/mvn args: ['deploy']
Jika file konfigurasi build sudah siap, mulai build 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:
Tambahkan repositori Artifact Registry ke file
.npmrc
dalam project Node.js Anda. File tersebut terletak di direktori dengan 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 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 repositori.
- REPOSITORY adalah nama repositori.
Tambahkan skrip ke file
package.json
dalam project Anda yang memuat ulang token akses untuk autentikasi dengan repositori."scripts": { "artifactregistry-login": "npx google-artifactregistry-auth" }
Dalam 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 penggantian 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 untuk mengupload paket Python ke repositori Python dan menginstal paket menggunakan pip.
Untuk mem-build dan menyimpan aplikasi Python dalam container, lalu mendorongnya ke repositori Docker, lihat Mem-build aplikasi Python dalam dokumentasi Cloud Build.
Untuk mengonfigurasi build:
Di direktori dengan file konfigurasi build Cloud Build, 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 dalam build, 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 menginstal Twine dan backend keyring Artifact Registry. Langkah kedua mengupload file Python yang telah di-build di subdirektori
dist
. Sesuaikan jalur kerequirements.txt
dan file Python yang di-build jika tidak cocok dengan cuplikan.Jalur repositori menyertakan penggantian 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 penggantian 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 di-resolve Cloud Build dengan project ID Google Cloud untuk build.- Jika Anda menjalankan perintah
gcloud builds submit
, Cloud Build akan menggunakan project ID yang aktif dalam sesi gcloud. - Jika Anda menggunakan pemicu build, Cloud Build akan menggunakan ID project tempat Cloud Build berjalan.
Atau, Anda dapat menggunakan penggantian 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 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 menyertakan penggantian
${_PACKAGE}
tambahan untuk nama paket.Jika Anda siap menjalankan build, tentukan nilai untuk penggantian yang ditentukan pengguna. Misalnya, perintah ini akan mengganti:
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" .
Langkah selanjutnya
- Pelajari cara men-deploy di Cloud Run.
- Pelajari cara men-deploy di Google Kubernetes Engine.