Halaman ini menjelaskan cara menggunakan Cloud Build untuk mem-build 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.
- Untuk menjalankan perintah
gcloud
di 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.
Mengonfigurasi akun layanan
Contoh dalam dokumen ini menggunakan akun layanan yang ditentukan pengguna. Untuk membuat akun layanan yang digunakan oleh Cloud Build, jalankan 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_ID"
Akun layanan komputasi default (digunakan oleh Cloud Run) memerlukan izin untuk bertindak sebagai akun layanan baru. Pertama, tentukan nama akun layanan komputasi di project Anda:
gcloud iam service-accounts list --filter="email:-compute@developer.gserviceaccount.com"
Selanjutnya, berikan peran
Service Account User (roles/iam.serviceAccountUser
):
gcloud iam service-accounts add-iam-policy-binding \
COMPUTE_SERVICE_ACCOUNT_EMAIL \
--member="serviceAccount:cloud-build-go@PROJECT_ID.iam.gserviceaccount.com" \
--role="roles/iam.serviceAccountUser"
Ganti COMPUTE_SERVICE_ACCOUNT_EMAIL
dengan alamat email akun layanan komputasi default yang dicetak oleh perintah sebelumnya.
Mengonfigurasi Izin IAM
Pastikan Anda memiliki izin yang diperlukan:
Untuk mendapatkan izin yang diperlukan guna melakukan build di Cloud Build,
minta administrator untuk memberi Anda
peran IAM Cloud Build Service Account (roles/cloudbuild.builds.builder
) di akun layanan build Anda.
Untuk mengetahui informasi selengkapnya tentang cara memberikan peran, lihat Mengelola akses ke project, folder, dan organisasi.
Anda mungkin juga bisa mendapatkan izin yang diperlukan melalui peran khusus atau peran bawaan lainnya.
Untuk mendapatkan izin yang diperlukan guna menyimpan artefak yang di-build di Artifact Registry,
minta administrator untuk memberi Anda
peran IAM Artifact Registry Writer (roles/artifactregistry.writer
) di akun layanan build Anda.
Untuk mendapatkan izin yang diperlukan guna menyimpan log pengujian di Logging,
minta administrator untuk memberi Anda
peran IAM Storage Object Creator (roles/storage.objectCreator
) di akun layanan build Anda.
Untuk mendapatkan izin yang diperlukan guna men-deploy aplikasi ke Cloud Run,
minta administrator untuk memberi Anda
peran IAM Cloud Run Developer (roles/run.developer
) di akun layanan build Anda.
Mengonfigurasi build Go
Image golang
publik dari Docker Hub
mendukung build 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
dalam image ini.
Bagian ini menunjukkan cara membuat contoh file konfigurasi build untuk aplikasi Go dari repositori Git cloud-build-samples. File konfigurasi build memiliki langkah-langkah untuk mem-build aplikasi, menambahkan pengujian unit, dan setelah pengujian lulus, untuk men-deploy aplikasi.
Untuk mem-build 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 kegolang
untuk menggunakan image golang dari Docker Hub untuk tugas Anda.entrypoint
: Tetapkan nilai kolom ini ke/bin/bash
. Hal ini memungkinkan Anda menjalankan perintah bash multibaris langsung dari langkah build.args
: Kolomargs
dari langkah build mengambil daftar argumen dan meneruskannya ke image yang dirujuk oleh kolomname
. Pada contoh berikut, kolomargs
menggunakan argumen untuk:- Menjalankan pemformat log pengujian untuk mendownload output log pengujian.
- Mencetak output log.
- Menyimpan hasil pengujian di
sponge.log
. Menampilkan hasil di
sponge.log
ke 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
goModules
untuk menentukan jalur aplikasi dan repositori Go Anda 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.mod
di ruang kerja build. - appPath: jalur ke aplikasi yang dipaketkan.
- version: nomor versi untuk aplikasi Anda, diformat dalam angka dan titik seperti
v1.0.1
.
Opsional: Mengaktifkan pembuatan asal
Cloud Build dapat menghasilkan metadata provenans build Supply chain Levels for Software Artifacts (SLSA) yang dapat diverifikasi untuk membantu mengamankan pipeline continuous integration Anda.
Untuk mengaktifkan pembuatan asal, tambahkan
requestedVerifyOption: VERIFIED
ke bagianoptions
dalam 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 di Cloud Storage dengan menentukan lokasi dan jalur bucket yang ada ke log pengujian.
Langkah build berikut menyimpan log pengujian yang Anda simpan dalam file XML JUNIT ke bucket Cloud Storage:
# Save test logs to Google Cloud Storage artifacts: objects: location: gs://$_BUCKET_NAME/ paths: - ${SHORT_SHA}_test_log.xml
Cuplikan berikut menunjukkan file konfigurasi build lengkap untuk 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' repositoryProject_id: '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 artikel Membuat pemicu build. Di kolom Substitution variables, Anda juga harus memberikan nama repositori Artifact Registry dan nama bucket Cloud Storage untuk log pengujian.
Langkah selanjutnya
- Pelajari cara melakukan deployment blue-green di Compute Engine.
- Pelajari cara memecahkan masalah error build.