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 Go

Go 1.23 (pratinjau) menggunakan buildpacks. Untuk daftar lengkap versi Go yang didukung, dan versi Ubuntu yang sesuai, lihat Jadwal dukungan runtime.

Untuk menggunakan versi Go yang didukung, Anda harus:

  • Instal 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 di folder yang sama dengan file app.yaml.

    Misalnya, struktur folder aplikasi Anda dengan go.mod harus menampilkan:

    <application-root>/
    --> app.yaml
    --> go.mod
    --> Other source files used in your application.
    
    
  • Sertakan setelan runtime_config dan operating_system dalam file app.yaml untuk menentukan sistem operasi.

  • 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.23 (pratinjau) di Ubuntu 22:

    runtime: go
    env: flex
    
    runtime_config:
        operating_system: "ubuntu22"
        runtime_version: "1.23"
    
  • 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, dan kemudian mungkin otomatis diupdate ke Go 1.18.11, tetapi tidak akan otomatis diupdate ke versi utama Go 1.19.

Memilih Go 1.23 (pratinjau) di file app.yaml akan menghasilkan Go 1.23 (pratinjau) versi patch terbaru yang tersedia.

  runtime: go
  env: flex

  runtime_config:
      operating_system: "ubuntu22"
      runtime_version: "1.23"

Lihat referensi app.yaml untuk informasi selengkapnya.

Versi runtime sebelumnya

Untuk menggunakan Go versi 1.15 dan yang lebih lama, tentukan versi dalam setelan runtime menggunakan format go1.x dalam file app.yaml Anda. 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, dan kemudian mungkin otomatis diupdate ke Go 1.14.11, tetapi tidak akan otomatis diupdate ke versi utama Go 1.15.

Memilih versi runtime go go1.15 dalam file app.yaml akan menghasilkan versi terbaru 1.15 yang tersedia, misalnya, 1.15.15.

  runtime: go1.15
  env: flex

Dukungan untuk runtime Go lainnya

Jika perlu menggunakan versi Go yang tidak didukung, Anda dapat membuat runtime kustom dan memilih image dasar yang valid dengan versi Go yang Anda butuhkan.

Untuk image dasar yang disediakan Google atau image dasar Docker Go, lihat Mem-build runtime kustom.

Mengimpor paket

Kode Anda dikompilasi saat Anda men-deploy aplikasi ke App Engine. Saat Anda menjalankan perintah deployment, dependensi aplikasi Anda akan dikumpulkan terlebih dahulu dari GOPATH lokal, lalu semua dependensi tersebut 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.