Halaman ini menjelaskan cara mengonfigurasi Cloud Build untuk membangun, menguji, memasukkan ke dalam container, dan men-deploy aplikasi Python.
Dengan Cloud Build, Anda dapat menggunakan image container yang tersedia secara publik untuk menjalankan tugas pengembangan, termasuk membangun, menguji, memasukkan ke container, mengupload ke Artifact Registry, men-deploy, dan menyimpan log build. Image python
publik dari Docker Hub sudah dilengkapi dengan alat python
dan pip
. Anda dapat mengonfigurasi Cloud Build menggunakan alat ini untuk menginstal dependensi, mem-build, dan menjalankan pengujian unit menggunakan alat ini.
Sebelum memulai
Petunjuk pada halaman ini mengasumsikan bahwa Anda sudah familier dengan Python. Selain itu:
-
Aktifkan API Cloud Build, Cloud Run, Cloud Storage and Artifact Registry.
- Untuk menjalankan perintah
gcloud
di halaman ini, instal Google Cloud CLI. - Praktiskan project Python Anda, termasuk file
requirements.txt
. Anda memerlukanDockerfile
beserta kode sumber. - Jika Anda ingin menyimpan container yang telah dibangun di Artifact Registry, buat repositori Docker di Artifact Registry.
- Jika Anda ingin menyimpan log pengujian di Cloud Storage, buat bucket di Cloud Storage.
Izin IAM yang diperlukan
Untuk menyimpan log pengujian di Logging, berikan peran Storage Object Creator (
roles/storage.objectCreator
) untuk bucket Cloud Storage ke akun layanan Cloud Build.Untuk menyimpan image yang di-build di Artifact Registry, berikan peran Artifact Registry Writer (
roles/artifactregistry.writer
) ke akun layanan Cloud Build.
Untuk mengetahui petunjuk tentang cara memberikan peran ini, lihat Memberikan peran menggunakan halaman IAM.
Mengonfigurasi build Python
Bagian ini membahas contoh file konfigurasi build untuk aplikasi Python. Bagian ini memiliki langkah-langkah build untuk menginstal persyaratan, menambahkan pengujian unit, serta setelah pengujian lulus, mem-build, dan men-deploy aplikasi.
Di direktori utama project, buat file konfigurasi Cloud Build dengan nama
cloudbuild.yaml
.Persyaratan penginstalan: Image
python
dari Docker Hub sudah diinstal denganpip
. Untuk menginstal dependensi daripip
, tambahkan langkah build dengan kolom berikut:name
: Tetapkan nilai kolom ini kepython
untuk menggunakan image python dari Docker Hub untuk tugas ini.entrypoint
: Menetapkan kolom ini akan mengganti titik entri default gambar yang dirujuk diname
. Tetapkan nilai kolom ini kepip
untuk memanggilpip
sebagai titik entri langkah build dan menjalankan perintahpip
.args
: Kolomargs
dari langkah build mengambil daftar argumen dan meneruskannya ke image yang dirujuk oleh kolomname
. Teruskan argumen untuk menjalankan perintahpip install
di kolom ini. Flag--user
dalam perintahpip install
memastikan bahwa langkah-langkah build berikutnya dapat mengakses modul yang diinstal dalam langkah build ini.
Langkah build berikut menambahkan argumen untuk menginstal persyaratan dari file
requirements.txt
:Menambahkan pengujian unit: Jika Anda telah menentukan pengujian unit dalam aplikasi menggunakan framework pengujian seperti
pytest
, Anda dapat mengonfigurasi Cloud Build untuk menjalankan pengujian dengan menambahkan kolom berikut dalam langkah build:name
: Tetapkan nilai kolom ini kepython
untuk menggunakan image python dari Docker Hub untuk tugas Anda.entrypoint
: Tetapkan nilai kolom ini kepython
untuk menjalankan perintahpython
.args
: Menambahkan argumen untuk menjalankan perintahpython pytest
.
Langkah build berikut menyimpan output log
pytest
ke file XML JUNIT. Nama file ini dibuat menggunakan versi pendek ID commit yang terkait dengan build Anda. Langkah build berikutnya akan menyimpan log dalam file ini ke Cloud Storage.Memasukkan aplikasi ke dalam container: Setelah menambahkan langkah build untuk memastikan bahwa pengujian telah lulus, Anda dapat mem-build aplikasi. Cloud Build menyediakan image Docker bawaan yang dapat digunakan untuk memasukkan aplikasi Python Anda ke dalam container. Untuk memasukkan aplikasi ke dalam container, tambahkan kolom berikut dalam langkah build:
name
: Menetapkan nilai kolom ini kegcr.io/cloud-builders/docker
untuk menggunakan image docker bawaan untuk tugas Anda.args
: Tambahkan argumen untuk perintahdocker build
sebagai nilai untuk kolom ini.
Langkah build berikut membangun
myimage
image dan memberinya tag dengan versi pendek ID commit Anda. Langkah build menggunakan substitusi default untuk project ID, nama repositori, dan nilai SHA pendek, sehingga nilai ini otomatis diganti pada waktu build.Kirim container ke Artifact Registry: Anda dapat menyimpan container yang telah dibangun di Artifact Registry, yang merupakan layanan Google Cloud yang dapat digunakan untuk menyimpan, mengelola, dan mengamankan artefak build. Untuk melakukannya, Anda harus memiliki repositori Docker yang ada di Artifact Registry. Untuk mengonfigurasi Cloud Build agar dapat menyimpan image di repositori Docker Artifact Registry, tambahkan langkah build dengan kolom berikut:
name
: Tetapkan nilai kolom ini kegcr.io/cloud-builders/docker
untuk menggunakan image builderdocker
resmi dari Container Registry untuk tugas Anda.args
: Tambahkan argumen untuk perintahdocker push
sebagai nilai kolom ini. Untuk URL tujuan, masukkan repositori Docker Artifact Registry tempat Anda ingin menyimpan image.
Langkah build berikut mengirim image yang Anda build pada langkah sebelumnya ke Artifact Registry:
Opsional: Jika Anda ingin Cloud Build membuat informasi provenance build, gunakan kolom
images
pada langkah build Anda, bukan menggunakan kolom terpisah menggunakan langkah buildDocker push
. Jika menggunakan build regional, Anda juga harus menambahkan kolomrequestedVerifyOption
dan menetapkan nilainya keVERIFIED
untuk mengaktifkan pembuatan provenance.Deploy container ke Cloud Run: Untuk men-deploy image di Cloud Run, tambahkan langkah build dengan kolom berikut:
name
: Tetapkan nilai kolom ini kegoogle/cloud-sdk
untuk menggunakan image gcloud CLI untuk memanggil perintahgcloud
guna men-deploy image di Cloud Run.args
: Tambahkan argumen untuk perintahgcloud run deploy
sebagai nilai kolom ini.
Langkah build berikut men-deploy image yang dibuat sebelumnya ke Cloud Run:
Simpan log pengujian ke Cloud Storage: Anda dapat mengonfigurasi Cloud Build untuk menyimpan log pengujian apa pun di Cloud Storage dengan menentukan lokasi bucket yang ada dan jalur ke log pengujian. Langkah build berikut menyimpan log pengujian yang Anda simpan dalam file XML JUNIT ke bucket Cloud Storage:
Cuplikan berikut menunjukkan file konfigurasi build lengkap untuk semua langkah yang dijelaskan di atas:
Mulai build Anda: secara manual atau menggunakan pemicu build.
Setelah build selesai, Anda dapat melihat detail repositori di Artifact Registry.
Anda juga dapat melihat metadata provenance build dan memvalidasi provenance untuk membantu melindungi supply chain software Anda.
Langkah selanjutnya
- Pelajari cara melihat hasil build.
- Pelajari cara mengamankan build.
- Pelajari cara membuat aplikasi Python mandiri.
- Pelajari cara menggunakan dependensi pribadi.
- Pelajari cara memecahkan masalah error build.