Halaman ini menjelaskan cara memulai build di Cloud Build secara manual menggunakan Google Cloud CLI dan Cloud Build API.
Sebelum memulai
- Jika Anda ingin menggunakan contoh command line dalam panduan ini, instal Google Cloud CLI.
- Untuk mem-build menggunakan konfigurasi build Cloud Build, buat file konfigurasi build.
- Untuk mem-build menggunakan
Dockerfile
, siapkanDockerfile
Anda. - Jika build Anda memerlukan kode sumber, siapkan kode sumber Anda.
Izin IAM yang diperlukan
- Jika Anda menyimpan log build di bucket log default, Anda memerlukan peran Project Viewer dan peran Cloud Build Editor untuk menjalankan build.
- Jika Anda menyimpan log build di bucket log yang dibuat pengguna, Anda memerlukan peran Cloud Build Editor untuk menjalankan build.
- Jika menggunakan kumpulan pribadi, Anda memerlukan peran Cloud Build WorkerPool User untuk menjalankan build.
Untuk mengetahui petunjuk cara memberikan peran IAM, lihat Mengonfigurasi akses ke resource Cloud Build.
Menjalankan build
Anda dapat menentukan sumber build menggunakan kolom Build source. Kolom Sumber build adalah salah satu dari berikut: storage_source
, repo_source
, git_source
, dan connected_repository
.
Mengirim build dengan storage_source
gcloud
Menggunakan Dockerfile:
Dockerfile
Anda berisi semua informasi yang diperlukan untuk mem-build image Docker
menggunakan Cloud Build.
Untuk menjalankan permintaan build menggunakan Dockerfile
, jalankan perintah berikut
dari direktori yang berisi kode aplikasi, Dockerfile
, dan
aset lainnya:
gcloud builds submit --region=us-west2 --tag gcr.io/PROJECT_ID/IMAGE_NAME .
Dengan keterangan:
- PROJECT_ID adalah nama project Google Cloud Anda.
- IMAGE_NAME adalah image yang akan di-build.
.
menentukan bahwa kode sumber berada di direktori kerja saat ini.
Nama lengkap image yang akan dibuat adalah gcr.ioPROJECT_ID/IMAGE_NAME
. Image yang dikirim ke Container Registry menggunakan
format nama registry.
Perintah gcloud builds submit
:
- mengompresi kode aplikasi,
Dockerfile
, dan aset lainnya di direktori saat ini seperti yang ditunjukkan oleh.
; - mengupload file ke bucket Cloud Storage;
- memulai build di lokasi
us-west2
menggunakan file yang diupload sebagai input; - memberi tag pada gambar menggunakan nama yang diberikan
- mengirimkan image yang telah di-build ke Container Registry.
Seiring build berlangsung, output-nya akan ditampilkan di jendela shell atau terminal. Setelah build selesai, Anda akan melihat output yang mirip dengan berikut:
DONE
---------------------------------------------------------------------------------
ID CREATE_TIME DURATION STATUS
$BUILD_ID 2023-10-28T15:21:18+00:00 12S SUCCESS
dengan $BUILD_ID
sebagai ID unik build Anda.
Menggunakan file konfigurasi build Cloud Build:
Untuk mengirimkan build menggunakan konfigurasi build, jalankan perintah berikut:
gcloud builds submit --region=us-west2 --config BUILD_CONFIG SOURCE
Dengan keterangan:
- 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 project Google Cloud, Cloud Build akan membuat bucket Cloud Storage bernama [YOUR_PROJECT_NAME]_cloudbuild
di project tersebut. Cloud Build menggunakan bucket ini untuk menyimpan kode sumber apa pun yang mungkin Anda gunakan untuk build. Cloud Build tidak otomatis menghapus konten di 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 --region=us-west2 --config cloudbuild.yaml \
gs://BUCKET/SOURCE.tar.gz
Dengan keterangan:
- BUCKET adalah nama bucket Anda di Cloud Storage yang berisi kode sumber untuk di-build.
- SOURCE adalah nama file kode sumber yang dikompresi.
Anda dapat menggunakan .
untuk menentukan bahwa kode sumber berada di direktori kerja
saat ini:
gcloud builds submit --region=us-west2 --config=cloudbuild.yaml .
API
Untuk mengirimkan permintaan build menggunakan curl
:
Buat file bernama
request.json
dengan konten berikut:{ "source": { "storageSource": { "bucket": "BUCKET", "object": "SOURCE.tar.gz" } }, "steps": [{ "name": "gcr.io/cloud-builders/docker", "args": [ "build", "-t", "gcr.io/PROJECT_ID/IMAGE_NAME", "." ] }], "images": [ "gcr.io/PROJECT_ID/IMAGE_NAME" ] }
Dengan keterangan:
- BUCKET adalah nama bucket Cloud Storage yang berisi kode sumber untuk di-build.
- SOURCE adalah nama file kode sumber yang dikompresi.
- IMAGE_NAME adalah nama image yang akan dibuat.
Dalam permintaan build ini, Cloud Build memanggil langkah build
docker
dengan argumenbuild -t gcr.io/$PROJECT_ID/IMAGE-NAME .
.Nama lengkap image yang akan dibuat adalah
gcr.io/$PROJECT_ID/IMAGE_NAME
.Image yang dikirim ke Container Registry menggunakan format nama registry.
Jalankan perintah berikut dengan
PROJECT_ID
adalah project ID Google Cloud Anda danREGION
adalah 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/builds
Dalam perintah ini,
curl
mengirimrequest.json
dalam panggilan POST ke endpointbuilds
untuk metode API projects.builds.create.Perintah ini menampilkan detail tentang build Anda di jendela shell atau terminal. Output-nya adalah respons JSON dan terlihat mirip dengan hal berikut:
{ "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", "gcr.io/PROJECT_ID/IMAGE_NAME", "." ] } ], "timeout": "600s", "images": [ "gcr.io/$PROJECT_ID/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 resource
Operation
di Cloud Build API. Kolommetadata
dimodelkan menggunakan resourceBuild
. StatusQUEUED
menunjukkan bahwa build sedang menunggu eksekusi.
Mengirim 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 --region=us-west2
Dengan keterangan:
- REPOSITORY adalah nama repositori Google 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 ref Git apa pun.
- BUILD_CONFIG adalah jalur ke file konfigurasi build.
Seiring build berlangsung, output-nya akan ditampilkan di jendela shell atau terminal. Setelah build selesai, Anda akan melihat output yang mirip dengan berikut:
DONE
---------------------------------------------------------------------------------
ID CREATE_TIME DURATION STATUS
$BUILD_ID 2023-10-28T15:21:18+00:00 12S SUCCESS
dengan $BUILD_ID
sebagai ID unik build Anda.
gcloudignore: Saat menyertakan kode sumber untuk build, perintah
di atas akan mengupload semua file dalam direktori yang ditentukan ke Google Cloud
Platform untuk di-build. Jika ingin mengecualikan file tertentu dalam direktori, Anda
dapat menyertakan file bernama .gcloudignore
di direktori upload level teratas;
file yang ditentukannya akan diabaikan. Jika tidak ada file .gcloudignore
di direktori upload tingkat atas, tetapi ada file .gitignore
, gcloud CLI akan membuat file .gcloudignore
yang kompatibel dengan Git yang
mengikuti file .gitignore
Anda. Untuk informasi selengkapnya, lihat
dokumentasi gcloudignore
.
Jika Anda tidak memiliki kode sumber untuk diteruskan ke build, gunakan flag --no-source
dengan BUILD_CONFIG adalah jalur ke file konfigurasi
build:
gcloud builds submit --region=us-west2 --config=BUILD_CONFIG --no-source
API
Untuk mengirimkan permintaan build menggunakan curl
:
Buat file bernama
request.json
dengan konten berikut:{ "source": { "connectedRepository": { "repository": "REPOSITORY", "revision": "REVISION" } }, "steps": [{ "name": "gcr.io/cloud-builders/docker", "args": [ "build", "-t", "gcr.io/PROJECT_ID/IMAGE_NAME", "." ] }], "images": [ "gcr.io/PROJECT_ID/IMAGE_NAME" ] }
Dengan keterangan:
- REPOSITORY adalah nama repositori Google 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 ref Git apa pun.
- IMAGE_NAME adalah nama image yang akan dibuat.
Dalam permintaan build ini, Cloud Build memanggil langkah build
docker
dengan argumenbuild -t gcr.io/PROJECT_ID/IMAGE_NAME .
.Nama lengkap image yang akan dibuat adalah
gcr.io/PROJECT_ID/IMAGE_NAME
. Image yang dikirim ke Container Registry menggunakan format nama registry.- REPOSITORY adalah nama repositori Google Cloud Build generasi ke-2, yang diformat sebagai
Jalankan perintah berikut dengan
PROJECT_ID
adalah project ID Google Cloud Anda dan REGION adalah 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/builds
Dalam perintah ini,
curl
mengirimrequest.json
dalam panggilan POST ke endpointbuilds
untuk metode API projects.builds.create.Perintah ini menampilkan detail tentang build Anda di jendela shell atau terminal. Output-nya adalah respons JSON dan terlihat mirip dengan hal berikut:
{ "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", "gcr.io/PROJECT_ID/IMAGE_NAME", "." ] } ], "timeout": "600s", "images": [ "gcr.io/PROJECT_ID/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 resource
Operation
di Cloud Build API. Kolommetadata
dimodelkan menggunakan resourceBuild
. StatusQUEUED
menunjukkan bahwa build sedang menunggu eksekusi.
Langkah selanjutnya
- Pelajari cara membuat pemicu manual.
- Pelajari cara melihat hasil build.
- Pelajari cara memecahkan masalah error build.