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 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 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/bardi lokasi/home/fred/go/src/foo/barsaat 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.yamllayanan dan satu atau beberapa file.go. - Jangan sertakan subdirektori apa pun dalam direktori layanan.
GOPATHharus 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.