Runtime Go adalah stack software yang bertanggung jawab untuk menginstal kode aplikasi dan dependensi Anda, lalu menjalankan aplikasi tersebut di lingkungan fleksibel.
Versi
1.18
dan yang lebih baru dibuat menggunakan buildpack, yang mengharuskan Anda memilih sistem operasi di fileapp.yaml
. Misalnya, untuk menggunakan Go 1.22, Anda harus menentukan Ubuntu 22 sebagai sistem operasi.Versi
1.15
dan yang lebih lama dibangun menggunakan Docker.
Untuk daftar lengkap versi Go yang didukung, dan versi Ubuntu yang sesuai, lihat Jadwal dukungan runtime.
Pilih versi Go
Versi runtime baru
Untuk runtime Go versi 1.18 dan yang lebih baru, Anda harus menyertakan
setelan runtime_config
dan operating_system
setelan di
app.yaml
untuk menentukan sistem operasi.
Untuk menggunakan runtime baru, Anda harus menginstal gcloud CLI
versi 420.0.0 atau yang lebih baru. Anda dapat memperbarui alat CLI
dengan menjalankan
perintah gcloud components update
. Untuk melihat versi yang diinstal, Anda dapat menjalankan perintah
gcloud version
.
Go merekomendasikan agar Anda menggunakan file go.mod
untuk mengelola dependensi.
Untuk menginstal dependensi selama deployment, sertakan file go.mod
dalam folder yang sama dengan file app.yaml
.
Misalnya, struktur folder aplikasi dengan go.mod
harus mewakili:
<application-root>/
--> app.yaml
--> go.mod
--> Other source files used in your application.
Secara opsional, Anda dapat menentukan versi runtime dengan menyertakan setelan runtime_version
dalam app.yaml
. Secara default, versi Go terbaru digunakan jika
setelan runtime_version
tidak ditentukan.
Contoh
Untuk menentukan Go 1.22 di Ubuntu 22:
runtime: go env: flex runtime_config: operating_system: "ubuntu22" runtime_version: "1.22"
Untuk menentukan versi Go terbaru yang didukung di Ubuntu 22:
runtime: go env: flex runtime_config: operating_system: "ubuntu22"
Aplikasi Anda menggunakan rilis stabil terbaru dari versi yang ditentukan di
file app.yaml
Anda. App Engine otomatis diupdate ke revisi patch baru, tetapi tidak akan otomatis mengupdate versi utama.
Misalnya, aplikasi Anda mungkin di-deploy di Go 1.18.10, lalu mungkin otomatis diupdate ke Go 1.18.11, tetapi tidak akan diupdate secara otomatis ke versi utama Go 1.19.
Memilih Go 1.22 di file app.yaml
akan menghasilkan
Go 1.22 versi patch
terbaru yang tersedia.
runtime: go
env: flex
runtime_config:
operating_system: "ubuntu22"
runtime_version: "1.22"
Lihat referensi app.yaml
untuk informasi selengkapnya.
Versi runtime sebelumnya
Untuk Go versi 1.15 dan yang lebih lama, tentukan versi menggunakan format go1.x
dalam file konfigurasi app.yaml
sebagai
runtime: go1.x
:
Contoh
runtime: go1.14 env: flex
Jika tidak ada versi yang ditentukan, versi default go1.11
akan dipilih
secara otomatis.
Aplikasi Anda menggunakan rilis stabil terbaru dari versi yang ditentukan di
file app.yaml
Anda. App Engine otomatis diupdate ke revisi patch baru, tetapi tidak akan otomatis mengupdate versi utama.
Misalnya, aplikasi Anda mungkin di-deploy di Go 1.14.10, lalu mungkin otomatis diupdate ke Go 1.14.11, tetapi tidak akan diupdate secara otomatis ke versi utama Go 1.15.
Memilih versi runtime go go1.15
di file app.yaml
akan menghasilkan
versi terbaru 1.15 yang tersedia, misalnya, 1.15.15.
runtime: go1.15 env: flex
Mengimpor paket
Kode Anda terkompilasi saat Anda men-deploy aplikasi ke App Engine. Saat Anda
menjalankan perintah deployment, dependensi aplikasi Anda akan dikumpulkan terlebih dahulu dari
GOPATH
lokal Anda, lalu semuanya dikirim ke server build. Jika ada
dependensi yang hilang, misalnya library pihak ketiga, akan terjadi kegagalan build.
Untuk menghindari kegagalan build dan memastikan bahwa semua dependensi aplikasi di-deploy dengan kode Anda, sebaiknya uji aplikasi Anda secara lokal sebelum men-deploy-nya.
Memperpanjang runtime
Untuk mengetahui petunjuk cara memperluas dan menyesuaikan runtime Go, baca builder runtime Go di GitHub.
Server metadata
Setiap instance aplikasi Anda dapat menggunakan server metadata Compute Engine untuk melakukan kueri informasi tentang instance, termasuk nama host, alamat IP eksternal, ID instance, metadata kustom, dan informasi akun layanan. Dengan App Engine, Anda tidak dapat menetapkan metadata kustom untuk setiap instance, tetapi Anda dapat menetapkan metadata kustom tingkat project serta membacanya dari instance App Engine dan Compute Engine singkat ini.
Gunakan
paket cloud.google.com/go/compute/metadata
untuk mengakses server metadata.