Anda dapat menggunakan paket apa pun yang kompatibel dengan linux/amd64 dengan instance yang berjalan di
lingkungan fleksibel App Engine. Petunjuk ini mengasumsikan Anda menggunakan perintah go get
untuk
mendapatkan paket langsung dari repositori yang didukung, seperti GitHub,
Bitbucket, LaunchPad, dan lainnya.
Mulai Go versi 1.22 dan yang lebih baru:
Anda tidak dapat menggunakan
go get
di luar modul dalam modeGOPATH
lama (GO111MODULE
=off
). Untuk 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 mengetahui informasi selengkapnya tentang versi Go, dan mengelola dependensi untuk direktori vendor, lihat GOPATH dan Modul.
Mendeklarasikan dan mengelola dependensi
Aplikasi Go disusun dalam paket yang mencerminkan struktur direktori
file sumber Anda. Saat Anda menggunakan pernyataan impor, jalur relatif dalam
impor ditafsirkan. Jalur impor yang valid adalah jalur
yang sepenuhnya memenuhi syarat dan relatif terhadap subdirektori src
dari semua direktori yang
ditentukan di GOPATH
Anda.
Misalnya, pertimbangkan contoh aplikasi tempat Anda menentukan hal berikut:
Modul
GOPATH
:export GOPATH=/home/fred/go.
File
src1-1.go
:import "foo/bar"
gcloud CLI akan mencari paket
foo/bar
di lokasi/home/fred/go/src/foo/bar
saat Anda menjalankan atau men-deploy aplikasi.
Jika Anda menyertakan sumber paket di GOPATH
, Anda harus berhati-hati untuk tidak
menempatkan kode sumber dalam direktori aplikasi tempat file
app.yaml
berada. Jika hal itu terjadi, masalah kecil dapat terjadi karena sebuah paket
mungkin dimuat dua kali, sekali untuk jalur yang relatif terhadap direktori layanan, dan
sekali lagi untuk jalur yang sepenuhnya memenuhi syarat. Untuk menghindari masalah, gcloud CLI
akan memindai direktori aplikasi dan GOPATH
, lalu melaporkan error
jika konflik terdeteksi.
Untuk hasil terbaik, kami menyarankan hal berikut:
- Buat direktori terpisah di direktori aplikasi Anda untuk setiap layanan.
- Setiap direktori layanan harus berisi file
app.yaml
layanan dan satu atau beberapa file.go
. - Jangan sertakan subdirektori apa pun dalam direktori layanan.
GOPATH
harus menentukan direktori yang berada di luar direktori aplikasi Anda dan berisi semua dependensi yang diimpor oleh aplikasi Anda.
Mendownload paket yang diperlukan
Anda dapat menggunakan perintah go get
untuk mendownload paket. Misalnya, untuk mendownload
packagename
dari GitHub my_repo
:
go get github.com/my_repo/packagename
Men-deploy ke App Engine
Untuk men-deploy aplikasi ke App Engine, Anda harus men-deploy library yang diperlukan oleh aplikasi beserta kode aplikasi Anda. Untuk mengetahui detail selengkapnya, lihat Menguji dan men-deploy aplikasi Anda.