Halaman ini menjelaskan cara menggunakan Cloud Build untuk membangun dan menguji aplikasi Go, mengupload artefak ke Artifact Registry, membuat informasi asal, dan menyimpan log pengujian di Cloud Storage.
Sebelum memulai
Petunjuk di halaman ini mengasumsikan bahwa Anda sudah memahami Go. Selain itu:
-
Enable the Cloud Build, Cloud Run, and Artifact Registry APIs.
Roles required to enable APIs
To enable APIs, you need the Service Usage Admin IAM role (
roles/serviceusage.serviceUsageAdmin), which contains theserviceusage.services.enablepermission. Learn how to grant roles. - Untuk menjalankan perintah
gclouddi halaman ini, instal Google Cloud CLI. - Siapkan project Go Anda.
- Memiliki repositori Go di Artifact Registry. Jika Anda belum memilikinya, buat repositori baru.
- Jika Anda ingin menyimpan log pengujian di Cloud Storage, buat bucket di Cloud Storage.
- Pastikan Anda mengetahui ID akun layanan runtime untuk Cloud Run.
Membuat akun layanan Cloud Build kustom
Buat akun layanan Cloud Build kustom dengan menjalankan perintah berikut di Google Cloud CLI:
gcloud iam service-accounts create cloud-build-go \
--description="Build and test Go applications" \
--display-name="Cloud Build Go" \
--project="PROJECT_NAME"
Anda akan menggunakan akun layanan ini untuk membangun dan menguji aplikasi Go Anda.
Mengonfigurasi Izin IAM
Untuk mengonfigurasi akun layanan baru Anda dengan izin yang diperlukan untuk membangun dan men-deploy aplikasi Go, lakukan hal berikut:
-
Di konsol Google Cloud , buka halaman settings Izin Cloud Build:
Buka menu Service account, lalu pilih akun layanan
cloud-build-goAnda.Tetapkan status peran berikut ke Diaktifkan:
- Admin Cloud Run (
roles/run.admin): Memungkinkan Cloud Build men-deploy layanan baru ke Cloud Run.- Di panel Assign Service Account User Role, pilih akun layanan runtime Anda, lalu klik Grant Permission. Konfigurasi ini memungkinkan akun layanan Cloud Build kustom Anda meniru identitas akun layanan runtime saat berinteraksi dengan layanan terkelola Cloud Run. Untuk mengetahui informasi selengkapnya, lihat Mengonfigurasi peniruan akun layanan Cloud Build untuk layanan terkelola.
- Admin Penyimpanan (
roles/storage.admin): Memungkinkan membaca dan menulis dari Cloud Storage. - Penulis Artifact Registry (
roles/artifactregistry.writer): Mengizinkan penarikan image dari dan penulisan ke Artifact Registry. - Penulis Log (
roles/logging.logWriter): Mengizinkan entri log ditulis ke Cloud Logging. - Cloud Build Editor (
roles/cloudbuild.builds.editor): Mengizinkan akun layanan Anda menjalankan build.
- Admin Cloud Run (
Mengonfigurasi build Go
Image golang publik dari Docker Hub mendukung pembangunan menggunakan modul Go.
Dengan menggunakan image ini sebagai langkah build dalam file konfigurasi Cloud Build, Anda dapat memanggil perintah go dalam image. Argumen yang diteruskan ke langkah build ini
diteruskan langsung ke alat golang, sehingga Anda dapat menjalankan perintah go apa pun
dalam image ini.
Bagian ini menunjukkan cara membuat file konfigurasi build contoh untuk aplikasi Go dari repositori Git cloud-build-samples. File konfigurasi build memiliki langkah-langkah untuk membangun aplikasi, menambahkan pengujian unit, dan setelah pengujian berhasil, men-deploy aplikasi.
Untuk membuat contoh aplikasi Go:
Mengonfigurasi pengujian unit: Jika telah menentukan pengujian unit di aplikasi, Anda dapat mengonfigurasi Cloud Build untuk menjalankan pengujian dengan menambahkan kolom berikut dalam langkah build:
name: Tetapkan nilai kolom ini kegolanguntuk menggunakan image golang dari Docker Hub untuk tugas Anda.entrypoint: Tetapkan nilai kolom ini ke/bin/bash. Hal ini memungkinkan Anda menjalankan perintah bash multi-baris langsung dari langkah build.args: Kolomargsdari langkah build mengambil daftar argumen dan meneruskannya ke image yang dirujuk oleh kolomname. Pada contoh berikut, kolomargsmenggunakan argumen untuk:- Menjalankan pemformat log pengujian untuk mendownload output log pengujian.
- Mencetak output log.
- Menyimpan hasil pengujian di
sponge.log. Menampilkan hasil dalam
sponge.logke file XML JUNIT. Nama file XML JUNIT dibuat menggunakan versi singkat ID commit yang terkait dengan build Anda. Langkah build berikutnya akan menyimpan log dalam file ini ke Cloud Storage.steps: # Run tests and save to file - name: golang:1.23 entrypoint: /bin/bash args: - -c - | go install github.com/jstemmer/go-junit-report/v2@latest 2>&1 go test -timeout 1m -v ./... | /go/bin/go-junit-report -set-exit-code -iocopy -out ${SHORT_SHA}_test_log.xml
Upload ke Artifact Registry: Dalam file konfigurasi, gunakan kolom
goModulesuntuk menentukan jalur aplikasi dan repositori Go di Artifact Registry:# Upload Go module to artifact registry artifacts: goModules: - repositoryName: 'repositoryName' repositoryLocation: 'location' repositoryProjectId: 'projectId' sourcePath: 'sourcePath' modulePath: 'appPath' moduleVersion: 'version'Ganti nilai berikut:
- repositoryName: nama repositori Go Anda di Artifact Registry.
- location: lokasi untuk repositori Anda di Artifact Registry.
- projectId: ID Google Cloud project yang berisi repositori Artifact Registry Anda.
- sourcePath: jalur ke file
go.moddi ruang kerja build. - appPath: jalur ke aplikasi yang dikemas.
- version: nomor versi untuk aplikasi Anda, diformat dalam angka dan titik seperti
v1.0.1.
Opsional: Mengaktifkan pembuatan asal-usul
Cloud Build dapat menghasilkan metadata asal build Supply chain Levels for Software Artifacts (SLSA) yang dapat diverifikasi untuk membantu mengamankan pipeline continuous integration Anda.
Untuk mengaktifkan pembuatan provenance, tambahkan
requestedVerifyOption: VERIFIEDke bagianoptionsdalam file konfigurasi Anda.Setelah build selesai, Anda dapat melihat detail repositori di Artifact Registry.
Anda juga dapat melihat metadata asal build dan memvalidasi asal.
Menyimpan log pengujian ke Cloud Storage: Anda dapat mengonfigurasi Cloud Build untuk menyimpan log pengujian apa pun di Cloud Storage dengan menentukan lokasi bucket dan jalur yang ada ke log pengujian.
Langkah build berikut menyimpan log pengujian yang Anda simpan dalam file JUNIT XML ke bucket Cloud Storage:
# Save test logs to Google Cloud Storage artifacts: objects: location: gs://$_BUCKET_NAME/ paths: - ${SHORT_SHA}_test_log.xmlCuplikan berikut menunjukkan file konfigurasi build lengkap untuk langkah-langkah sebelumnya:
steps: # Run tests and save to file - name: golang:1.23 entrypoint: /bin/bash args: - -c - | go install github.com/jstemmer/go-junit-report/v2@latest 2>&1 go test -timeout 1m -v ./... | /go/bin/go-junit-report -set-exit-code -iocopy -out ${SHORT_SHA}_test_log.xml # Store golang modules in Google Artifact Registry artifacts: goModules: - repositoryName: 'repositoryName' repositoryLocation: 'location' repositoryProjectId: 'projectId' sourcePath: 'sourcePath' modulePath: 'appPath' moduleVersion: 'version'Mulai build menggunakan gcloud CLI atau buat pemicu build:
Google Cloud CLI
gcloud builds submit --region=us-west2 --config=cloudbuild.yaml \
--substitutions=_AR_REPO_NAME="AR_REPO_NAME"
Pemicu Build
Ikuti langkah-langkah di Membuat pemicu build. Di kolom Variabel penggantian, Anda juga harus memberikan nama repositori Artifact Registry dan nama bucket Cloud Storage untuk log pengujian.
Langkah berikutnya
- Pelajari cara melakukan deployment biru-hijau di Compute Engine.
- Pelajari cara memecahkan masalah error build.