Runtime Go

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 file app.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.