Aplikasi yang berjalan dalam runtime standar Go 1.12+ dapat menggunakan paket apa pun yang kompatibel dengan linux/amd64.
App Engine memerlukan semua pernyataan impor dalam kode Go Anda untuk menentukan jalur absolut. Misalnya, gunakan:
import "github.com/example/mypackage"
Menggunakan modul Go
Sebaiknya gunakan modul Go
untuk mengelola dependensi di aplikasi Go Anda. Anda dapat terus menggunakan mode GOPATH yang lebih lama
jika belum siap untuk bermigrasi
ke modul Go.
Mulai Go versi 1.22 dan yang lebih baru:
Anda tidak dapat menggunakan
go getdi luar modul dalam modeGOPATHlama (GO111MODULE=off). Untuk informasi selengkapnya, lihat Alat.Go merekomendasikan agar Anda menggunakan file
go.moduntuk mengelola dependensi. Untuk menginstal dependensi selama deployment, sertakan filego.moddi folder yang sama dengan fileapp.yaml. Untuk mengetahui informasi selengkapnya tentang versi Go, dan mengelola dependensi untuk direktori vendor, lihatGOPATHdan Modul.
Saat Anda men-deploy aplikasi, App Engine menggunakan perintah go build untuk
mem-build aplikasi dan mencocokkan perilaku Go itu sendiri. Untuk memastikan bahwa
aplikasi Anda menggunakan mode module-aware, lakukan hal berikut di lingkungan
pengembangan:
Buat file
go.modmodul Anda di dalam direktori yang sama dengan fileapp.yamlAnda. App Engine menelusuri direktori saat ini dan beberapa direktori induk berurutan hingga menemukan filego.mod.Jika App Engine tidak menemukan file
go.mod, App Engine akan mengikuti modeGOPATH.Jika Anda menetapkan variabel lingkungan
GO111MODULE, pastikan nilai variabel mengaktifkan modemodule-aware. Saat Anda men-deploy aplikasi, App Engine akan memeriksa lingkungan Anda untuk menemukanGO111MODULEdan mencocokkan perilaku Go itu sendiri. App Engine hanya menerapkan setelan variabelGO111MODULEjika Anda telah menyertakan filego.moduntuk aplikasi Anda.Untuk Go 1.12, jangan tempatkan direktori aplikasi Anda dalam folder
$GOPATH/src. Jika aplikasi Go 1.12 Anda berada di mana saja dalam hierarki direktori$GOPATH/src, App Engine akan mengikuti modeGOPATHmeskipun Anda telah menentukan filego.moduntuk aplikasi Anda.Untuk Go 1.13 dan yang lebih baru, App Engine menggunakan mode
module-awaresecara default, kecuali jikaGO111MODULEmengabaikan default atau filego.modtidak ada dalam direktori aplikasi.
Dependensi vendoring
Vendoring menyalin paket yang digunakan aplikasi Anda ke dalam direktori aplikasi,
dan tidak akan mendownload modul dari sumbernya selama proses build. Go
menyediakan perintah go build untuk
mem-vendor paket yang dibutuhkan aplikasi Anda
ke direktori bernama vendor di direktori utama aplikasi Anda.
Di Go 1.14 dan yang lebih baru, jika direktori utama aplikasi berisi direktori bernama
vendor, perintah go build dan proses deployment App Engine
akan menggunakan paket dalam direktori vendor, dan tidak akan mendownload modul.
Di Go 1.13 dan yang lebih lama, vendoring hanya tersedia jika Anda menyiapkan
lingkungan untuk menggunakan mode GOPATH.
Menggunakan dependensi pribadi
App Engine tidak dapat mendownload dependensi pribadi Anda selama proses build, sehingga Anda harus menyertakan dependensi dengan kode aplikasi setelah deployment.
Gunakan perintah replace dalam file go.mod untuk mendeklarasikan
dependensi pribadi. Contoh berikut mengasumsikan bahwa aplikasi Anda berada di direktori
/myapp/:
Ubah ke direktori aplikasi Anda:
cd /myappBuat direktori yang berisi dependensi pribadi Anda:
mkdir privatePastikan dependensi pribadi Anda berada di direktori
private. Salah satu pendekatannya adalah dengan membuat symlink:mkdir private/private.example.com ln -s /path/to/private.example.com/foo private/private.example.com/fooUpdate file
go.modAnda untuk menggunakan perintahreplaceagar dapat menggunakan direktoriprivateuntuk dependensi Anda:go mod edit -replace=private.example.com/foo=./private/private.example.com/fooFile
go.modAnda sekarang akan terlihat seperti:File
go.modakhirmodule private.example.com/myapp require private.example.com/foo v1.2.3 replace private.example.com/foo => ./private/private.example.com/fooFile
go.modaslimodule private.example.com/myapp require private.example.com/foo v1.2.3Jangan mengubah cara Anda mengimpor dan menggunakan paket pribadi. Pernyataan
importAnda akan terlihat seperti ini:import "private.example.com/foo"Sertakan dependensi pribadi Anda dalam deployment dengan men-deploy aplikasi Anda:
gcloud app deploy