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 di 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 dapat terus menggunakan mode GOPATH
lama
jika belum siap untuk bermigrasi
ke modul Go.
Mulai Go versi 1.22 dan yang lebih baru:
Anda tidak dapat menggunakan
go get
di luar modul dalam modeGOPATH
lama (GO111MODULE
=off
). Untuk mengetahui informasi selengkapnya, lihat Alat.Go merekomendasikan agar Anda menggunakan file
go.mod
untuk mengelola dependensi. Untuk menginstal dependensi selama deployment, sertakan filego.mod
di folder yang sama dengan fileapp.yaml
. Untuk informasi selengkapnya tentang versi Go, dan mengelola dependensi untuk direktori vendor, lihatGOPATH
dan 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.mod
modul Anda di dalam direktori yang sama dengan fileapp.yaml
Anda. App Engine menelusuri direktori saat ini dan direktori induk berurutan hingga menemukan filego.mod
.Jika App Engine tidak menemukan file
go.mod
, file tersebut akan mengikuti modeGOPATH
.Jika Anda menetapkan variabel lingkungan
GO111MODULE
, pastikan nilai variabel tersebut mengaktifkan modemodule-aware
. Saat Anda men-deploy aplikasi, App Engine memeriksa lingkungan Anda untuk menemukanGO111MODULE
dan mencocokkan perilaku Go itu sendiri. App Engine hanya menerapkan setelan variabelGO111MODULE
jika Anda telah menyertakan filego.mod
untuk aplikasi.Untuk Go 1.12, jangan temukan direktori aplikasi dalam folder
$GOPATH/src
. Jika aplikasi Go 1.12 Anda ada di mana saja dalam hierarki direktori$GOPATH/src
, App Engine akan mengikuti modeGOPATH
meskipun Anda telah menentukan filego.mod
untuk aplikasi tersebut.Untuk Go 1.13 dan yang lebih baru, App Engine menggunakan mode
module-aware
secara default, kecuali jikaGO111MODULE
mengganti versi default atau filego.mod
tidak ada di 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 dalam direktori bernama vendor
di direktori utama aplikasi Anda.
Di Go 1.14 dan yang lebih baru, jika direktori utama aplikasi Anda berisi direktori bernama
vendor
, perintah go build
dan proses deployment App Engine
akan menggunakan paket dalam direktori vendor, bukan
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 saat deployment.
Gunakan perintah replace
di file go.mod
Anda untuk mendeklarasikan
dependensi pribadi. Contoh berikut mengasumsikan bahwa aplikasi Anda berada di direktori
/myapp/
:
Ubah ke direktori aplikasi Anda:
cd /myapp
Buat direktori yang berisi dependensi pribadi Anda:
mkdir private
Pastikan 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/foo
Update file
go.mod
Anda untuk menggunakan perintahreplace
agar dapat menggunakan direktoriprivate
untuk dependensi Anda:go mod edit -replace=private.example.com/foo=./private/private.example.com/foo
File
go.mod
Anda sekarang akan terlihat seperti:File
go.mod
akhirmodule private.example.com/myapp require private.example.com/foo v1.2.3 replace private.example.com/foo => ./private/private.example.com/foo
File
go.mod
aslimodule private.example.com/myapp require private.example.com/foo v1.2.3
Jangan mengubah cara mengimpor dan menggunakan paket pribadi. Pernyataan
import
Anda akan terlihat seperti ini:import "private.example.com/foo"
Sertakan dependensi pribadi Anda dalam deployment dengan men-deploy aplikasi Anda:
gcloud app deploy