Halaman ini menjelaskan cara mengonfigurasi Cloud Build untuk membangun, menguji, menyimpan dalam container, dan men-deploy aplikasi Python.
Cloud Build memungkinkan Anda menggunakan image container yang tersedia secara publik untuk menjalankan tugas pengembangan, termasuk membangun, menguji, membuat container, mengupload ke Artifact Registry, men-deploy, dan menyimpan log build. Image python publik dari Docker Hub sudah diinstal sebelumnya dengan alat python dan pip. Anda dapat mengonfigurasi Cloud Build agar menggunakan alat ini untuk menginstal dependensi, mem-build, dan menjalankan pengujian unit menggunakan alat ini.
Sebelum memulai
Petunjuk di halaman ini mengasumsikan bahwa Anda sudah memahami Python. Selain itu:
-
Enable the Cloud Build, Cloud Run, Cloud Storage 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 Python Anda, termasuk file
requirements.txt. Anda memerlukanDockerfilebeserta kode sumber Anda. - Jika Anda ingin menyimpan container yang di-build 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 build Anda.Untuk menyimpan image yang dibuat di Artifact Registry, berikan peran Penulis Artifact Registry (
roles/artifactregistry.writer) ke akun layanan build Anda.
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. File ini memiliki langkah-langkah build untuk menginstal persyaratan, menambahkan pengujian unit, dan setelah pengujian berhasil, membangun, dan men-deploy aplikasi.
Di direktori root project Anda, buat file konfigurasi Cloud Build bernama
cloudbuild.yaml.Persyaratan penginstalan: Image
pythondari Docker Hub sudah diinstal sebelumnya denganpip. Untuk menginstal dependensi daripip, tambahkan langkah build dengan kolom berikut:name: Tetapkan nilai kolom ini kepythonuntuk menggunakan image python dari Docker Hub untuk tugas ini.entrypoint: Menetapkan kolom ini akan menggantikan titik entri default gambar yang dirujuk diname. Tetapkan nilai kolom ini kepipuntuk memanggilpipsebagai titik entri langkah build dan menjalankan perintahpip.args: Kolomargsdari langkah build mengambil daftar argumen dan meneruskannya ke image yang dirujuk oleh kolomname. Teruskan argumen untuk menjalankan perintahpip installdi kolom ini. Flag--userdalam perintahpip installmemastikan 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 telah menentukan pengujian unit di 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 kepythonuntuk menggunakan image python dari Docker Hub untuk tugas Anda.entrypoint: Tetapkan nilai kolom ini kepythonuntuk menjalankan perintahpython.args: Tambahkan argumen untuk menjalankan perintahpython pytest.
Langkah build berikut menyimpan output log
pytestke file XML JUNIT. Nama file ini dibuat menggunakan versi singkat ID commit yang terkait dengan build Anda. Langkah build berikutnya akan menyimpan log dalam file ini ke Cloud Storage.Mengemas aplikasi dalam container: Setelah menambahkan langkah build untuk memastikan bahwa pengujian telah lulus, Anda dapat membuat aplikasi. Cloud Build menyediakan image Docker yang telah dibuat sebelumnya yang dapat Anda gunakan untuk memasukkan aplikasi Python ke dalam container. Untuk membuat container aplikasi, tambahkan kolom berikut dalam langkah build:
name: Tetapkan nilai kolom ini kegcr.io/cloud-builders/dockeruntuk menggunakan image Docker bawaan untuk tugas Anda.args: Tambahkan argumen untuk perintahdocker buildsebagai nilai untuk kolom ini.
Langkah build berikut membangun image
myimagedan memberi tag dengan versi singkat ID commit Anda. Langkah build menggunakan penggantian default untuk project ID, nama repositori, dan nilai SHA pendek, sehingga nilai-nilai ini diganti secara otomatis pada waktu build.Kirim container ke Artifact Registry: Anda dapat menyimpan container yang dibangun di Artifact Registry, yang merupakan layanan yang dapat Anda gunakan untuk menyimpan, mengelola, dan mengamankan artefak build. Google Cloud Untuk melakukannya, Anda harus memiliki repositori Docker yang sudah ada di Artifact Registry. Untuk mengonfigurasi Cloud Build guna menyimpan image di repositori Docker Artifact Registry, tambahkan langkah build dengan kolom berikut:
name: Tetapkan nilai kolom ini kegcr.io/cloud-builders/dockeruntuk menggunakan image builderdockerresmi untuk tugas Anda.args: Tambahkan argumen untuk perintahdocker pushsebagai nilai kolom ini. Untuk URL tujuan, masukkan repositori Docker Artifact Registry tempat Anda ingin menyimpan image.
Langkah build berikut akan mengirim image yang Anda buat pada langkah sebelumnya ke Artifact Registry:
Opsional: Jika Anda ingin Cloud Build membuat informasi asal build Supply chain Levels for Software Artifacts (SLSA), selesaikan langkah-langkah berikut:
- Gunakan kolom
imagesdi langkah build, bukan menggunakan langkah buildDocker pushterpisah. - Tambahkan
requestedVerifyOption: VERIFIEDke bagianoptionspada file konfigurasi build Anda.
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-sdkuntuk menggunakan image gcloud CLI guna memanggil perintahgclouduntuk men-deploy image di Cloud Run.args: Tambahkan argumen untuk perintahgcloud run deploysebagai nilai kolom ini.
Langkah build berikut men-deploy image yang dibangun sebelumnya ke Cloud Run:
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:
Cuplikan berikut menunjukkan file konfigurasi build lengkap untuk semua langkah yang dijelaskan di atas:
Mulai build: secara manual atau menggunakan pemicu build.
Setelah build selesai, Anda dapat melihat detail repositori di Artifact Registry.
Anda juga dapat melihat metadata asal build dan memvalidasi asal.
Langkah berikutnya
- 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.