Halaman ini menjelaskan cara memulai build di Cloud Build secara manual menggunakan Google Cloud CLI dan Cloud Build API.
Sebelum memulai
- Untuk mem-build menggunakan konfigurasi build Cloud Build, buat file konfigurasi build.
- Siapkan kode sumber aplikasi dan
DockerfileAnda. - Siapkan repositori Docker untuk menyimpan image di Artifact Registry, atau buat repositori.
Izin IAM yang diperlukan
Untuk memastikan bahwa memiliki izin yang diperlukan untuk mengirimkan build, minta administrator Anda untuk memberikan peran IAM berikut ke pada akun layanan Anda:
-
Menyimpan log build di bucket log default:
Editor Cloud Build (
roles/cloudbuild.builds.editor) -
Menyimpan log build di bucket log yang dibuat pengguna:
Editor Cloud Build (
roles/cloudbuild.builds.editor) -
Menggunakan kumpulan pribadi:
Pengguna WorkerPool Cloud Build (
roles/cloudbuild.workerPoolUser)
Untuk mengetahui informasi selengkapnya tentang pemberian peran, lihat Mengelola akses ke project, folder, dan organisasi.
Administrator Anda mungkin juga dapat memberikan izin yang diperlukan melalui peran khusus atau peran bawaan lainnya.
Menjalankan build
Anda dapat menentukan sumber build menggunakan kolom Sumber build. Kolom Sumber build adalah salah satu dari berikut ini: storage_source, repo_source, git_source, dan connected_repository.
Mengirimkan build dengan storage_source
gcloud
Menggunakan Dockerfile:
Dockerfile Anda berisi semua informasi yang diperlukan untuk mem-build image Docker menggunakan Cloud Build.
Untuk mem-build menggunakan Dockerfile, jalankan perintah berikut dari direktori yang berisi kode sumber dan Dockerfile Anda:
gcloud builds submit --tag LOCATION-docker.pkg.dev/PROJECT_ID/REPOSITORY/IMAGE_NAME
Dengan:
- LOCATION: lokasi regional atau multi-regional repositori Docker Anda di Artifact Registry.
- PROJECT_ID: ID project Anda Google Cloud .
- REPOSITORY: nama repositori Artifact Registry Anda.
- IMAGE_NAME: nama image container yang akan di-build.
Nama lengkap image yang akan di-build adalah
LOCATION-docker.pkg.dev/PROJECT_ID/REPOSITORY/IMAGE_NAME.
Image yang dikirim ke Artifact Registry menggunakan
konvensi penamaan Artifact Registry.
Perintah gcloud builds submit:
- mengompresi kode aplikasi,
Dockerfile, dan aset lainnya di direktori saat ini seperti yang ditunjukkan oleh.; - memulai build di lokasi
LOCATIONmenggunakan file yang diupload sebagai input; - memberi tag pada image menggunakan nama yang diberikan;
- mengirim image yang di-build ke Artifact Registry.
Saat build berlangsung, output-nya akan ditampilkan di jendela shell atau terminal Anda. Setelah build selesai, Anda akan melihat output yang mirip dengan berikut ini:
DONE
---------------------------------------------------------------------------------
ID CREATE_TIME DURATION STATUS
$BUILD_ID 2023-10-28T15:21:18+00:00 12S SUCCESS
dengan $BUILD_ID adalah ID unik build Anda.
Menggunakan file konfigurasi build Cloud Build:
Untuk mengirimkan build menggunakan konfigurasi build, jalankan perintah berikut:
gcloud builds submit --config BUILD_CONFIG SOURCE
Dengan:
- BUILD_CONFIG adalah jalur ke file konfigurasi build.
- SOURCE adalah kode sumber jalur atau URL.
Saat Anda menjalankan gcloud builds submit untuk pertama kalinya di a Google Cloud project,
Cloud Build akan membuat bucket Cloud Storage bernama [YOUR_PROJECT_NAME]_cloudbuild
di project tersebut. Cloud Build menggunakan bucket ini untuk menyimpan kode sumber yang mungkin Anda gunakan untuk build. Cloud Build tidak otomatis menghapus konten dalam bucket ini. Untuk menghapus objek yang tidak lagi Anda gunakan untuk
build, Anda dapat menyiapkan konfigurasi siklus proses di bucket
atau menghapus objek secara manual.
Perintah berikut menunjukkan cara mengirimkan permintaan build cloudbuild.yaml menggunakan kode sumber yang disimpan di bucket Cloud Storage.
gcloud builds submit --config cloudbuild.yaml \
gs://BUCKET/SOURCE.tar.gz
Dengan:
- BUCKET adalah nama bucket Anda di Cloud Storage yang berisi kode sumber untuk di-build.
- SOURCE adalah nama file kode sumber terkompresi Anda.
Anda dapat menggunakan . untuk menentukan bahwa kode sumber berada di direktori kerja saat ini:
gcloud builds submit --config=cloudbuild.yaml .
API
Untuk mengirimkan permintaan build menggunakan curl:
Buat file bernama
request.jsondengan konten berikut:{ "source": { "storageSource": { "bucket": "BUCKET", "object": "SOURCE.tar.gz" } }, "steps": [{ "name": "gcr.io/cloud-builders/docker", "args": [ "build", "-t", "LOCATION-docker.pkg.dev/PROJECT_ID/REPOSITORY/IMAGE_NAME", "." ] }], "images": [ "LOCATION-docker.pkg.dev/PROJECT_ID/REPOSITORY/IMAGE_NAME" ] }Dengan:
- BUCKET adalah nama bucket Cloud Storage Anda yang berisi kode sumber untuk di-build.
- SOURCE adalah nama file kode sumber terkompresi Anda.
- IMAGE_NAME adalah nama image yang akan di-build.
- LOCATION: lokasi regional atau multi-regional repositori Docker Anda di Artifact Registry.
- PROJECT_ID: ID project Anda Google Cloud .
- REPOSITORY: nama repositori Docker Anda di Artifact Registry.
Dalam permintaan build ini, Cloud Build memanggil langkah build
dockerdengan argumenbuild -t LOCATION-docker.pkg.dev/PROJECT_ID/REPOSITORY ..Nama lengkap image yang akan di-build adalah
LOCATION-docker.pkg.dev/PROJECT_ID/REPOSITORY.Image yang dikirim ke Artifact Registry menggunakan konvensi penamaan Artifact Registry.
Jalankan perintah berikut, dengan
PROJECT_IDadalah ID project Anda Google Cloud danREGIONadalah salah satu region yang didukung :curl -X POST -T request.json -H "Authorization: Bearer $(gcloud config config-helper \ --format='value(credential.access_token)')" \ https://cloudbuild.googleapis.com/v1/projects/PROJECT_ID/locations/REGION/buildsDalam perintah ini,
curlmengirimrequest.jsondalam panggilan POST kebuildsendpoint untuk metode API projects.builds.create.Perintah ini menampilkan detail tentang build Anda di jendela shell atau terminal Anda. Output-nya adalah respons JSON dan akan terlihat mirip dengan berikut ini:
{ "name": "operations/build/$PROJECT-ID/NmZhZW...", "metadata": { "@type": "type.googleapis.com/google.devtools.cloudbuild.v1.BuildOperationMetadata", "build": { "id": $BUILD-ID, "status": "QUEUED", "source": { "storageSource": { "bucket": "BUCKET", "object": "SOURCE.tar.gz" } }, "createTime": "2017-05-12T18:58:07.341526Z", "steps": [ { "name": "gcr.io/cloud-builders/docker", "args": [ "build", "-t", "LOCATION-docker.pkg.dev/PROJECT_ID/REPOSITORY/IMAGE_NAME", "." ] } ], "timeout": "600s", "images": [ "LOCATION-docker.pkg.dev/PROJECT_ID/REPOSITORY/IMAGE_NAME" ], "projectId": $PROJECT-ID, "logsBucket": "gs://...", "sourceProvenance": { "resolvedStorageSource": { "bucket": "BUCKET", "object": "SOURCE.tar.gz" "generation": "..." } }, "logUrl": "https://console.cloud.google.com/cloud-build/builds/...?project=$PROJECT_ID" } } }Respons JSON dimodelkan menggunakan the
Operationresource di Cloud Build API. Kolommetadatadimodelkan menggunakanBuildresource. StatusQUEUEDmenunjukkan bahwa build sedang menunggu eksekusi.
Mengirimkan build dengan connected_repository
gcloud
Untuk menjalankan permintaan build dengan sumber build dari resource repositori generasi ke-2, jalankan perintah berikut:
gcloud builds submit REPOSITORY --revision=REVISION --config=BUILD_CONFIG LOCATION
Dengan:
- LOCATION adalah lokasi regional atau multi-regional repositori Docker Anda di Artifact Registry.
- REPOSITORY adalah nama repositori Cloud Build generasi ke-2, yang diformat sebagai
projects/*/locations/*/connections/*/repositories/*. - REVISION adalah revisi yang akan diambil dari repositori Git seperti cabang, tag, SHA commit, atau referensi Git apa pun.
- BUILD_CONFIG adalah jalur ke file konfigurasi build.
Saat build berlangsung, output-nya akan ditampilkan di jendela shell atau terminal Anda. Setelah build selesai, Anda akan melihat output yang mirip dengan berikut ini:
DONE
---------------------------------------------------------------------------------
ID CREATE_TIME DURATION STATUS
$BUILD_ID 2023-10-28T15:21:18+00:00 12S SUCCESS
dengan $BUILD_ID adalah ID unik build Anda.
gcloudignore: Saat menyertakan kode sumber untuk build, perintah sebelumnya
akan mengupload semua file di direktori yang ditentukan untuk Google Cloud
di-build. Jika ingin mengecualikan file tertentu di direktori, Anda dapat menyertakan file bernama .gcloudignore di direktori upload tingkat atas; file yang ditentukannya akan diabaikan. Jika .gcloudignore tidak ada di direktori upload tingkat atas, tetapi ada file .gitignore, gcloud CLI akan membuat file .gcloudignore yang kompatibel dengan Git yang menghormati file .gitignore-ed Anda. Untuk mengetahui informasi selengkapnya, lihat dokumentasi
gcloudignore.
Jika Anda tidak memiliki kode sumber untuk diteruskan ke build, gunakan --no-source
flag dengan BUILD_CONFIG adalah jalur ke file konfigurasi build:
gcloud builds submit --config CONFIG_FILE_PATH SOURCE_DIRECTORY
API
Untuk mengirimkan permintaan build menggunakan curl:
Buat file bernama
request.jsondengan konten berikut:{ "source": { "connectedRepository": { "repository": "REPOSITORY", "revision": "REVISION" } }, "steps": [{ "name": "gcr.io/cloud-builders/docker", "args": [ "build", "-t", "LOCATION-docker.pkg.dev/PROJECT_ID/REPOSITORY/IMAGE_NAME", "." ] }], "images": [ "LOCATION-docker.pkg.dev/PROJECT_ID/REPOSITORY/IMAGE_NAME" ] }Dengan:
- REPOSITORY adalah nama repositori Cloud Build generasi ke-2, yang diformat sebagai
projects/*/locations/*/connections/*repositories/*. - REVISION adalah revisi yang akan diambil dari repositori Git seperti cabang, tag, SHA commit, atau referensi Git apa pun.
- IMAGE_NAME adalah nama image yang akan di-build.
- LOCATION: lokasi regional atau multi-regional repositori Docker Anda di Artifact Registry.
- PROJECT_ID: ID project Anda Google Cloud .
Dalam permintaan build ini, Cloud Build memanggil langkah build
dockerdengan argumenbuild -t LOCATION-docker.pkg.dev/PROJECT_ID/REPOSITORY/IMAGE_NAME ..Nama lengkap image yang akan di-build adalah
LOCATION-docker.pkg.dev/PROJECT_ID/REPOSITORY/IMAGE_NAME. Image yang dikirim ke Artifact Registry menggunakan konvensi penamaan Artifact Registry.- REPOSITORY adalah nama repositori Cloud Build generasi ke-2, yang diformat sebagai
-
curl -X POST -T request.json -H "Authorization: Bearer $(gcloud config config-helper \ --format='value(credential.access_token)')" \ https://cloudbuild.googleapis.com/v1/projects/PROJECT_ID/locations/REGION/buildsDalam perintah ini,
curlmengirimrequest.jsondalam panggilan POST kebuildsendpoint untuk metode API projects.builds.create.Perintah ini menampilkan detail tentang build Anda di jendela shell atau terminal Anda. Output-nya adalah respons JSON dan akan terlihat mirip dengan berikut ini:
{ "name": "operations/build/$PROJECT-ID/NmZhZW...", "metadata": { "@type": "type.googleapis.com/google.devtools.cloudbuild.v1.BuildOperationMetadata", "build": { "id": $BUILD-ID, "status": "QUEUED", "source": { "connectedRepository": { "repository": "REPOSITORY", "revision": "REVISION" } }, "createTime": "2017-05-12T18:58:07.341526Z", "steps": [ { "name": "gcr.io/cloud-builders/docker", "args": [ "build", "-t", "LOCATION-docker.pkg.dev/PROJECT_ID/REPOSITORY/IMAGE_NAME", "." ] } ], "timeout": "600s", "images": [ "LOCATION-docker.pkg.dev/PROJECT_ID/REPOSITORY/IMAGE_NAME" ], "projectId": PROJECT_ID, "logsBucket": "gs://...", "sourceProvenance": { "resolvedConnectedRepository": { "repository": "REPOSITORY", "revision": "REVISION.tar.gz" "generation": "..." } }, "logUrl": "https://console.cloud.google.com/cloud-build/builds/...?project=PROJECT_ID" } } }Respons JSON dimodelkan menggunakan the
Operationresource di Cloud Build API. Kolommetadatadimodelkan menggunakanBuildresource. StatusQUEUEDmenunjukkan bahwa build sedang menunggu eksekusi.
Langkah berikutnya
- Pelajari cara membuat pemicu manual.
- Pelajari cara melihat hasil build.
- Pelajari cara memecahkan masalah error build.