Menentukan dependensi

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 mode GOPATH 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 file go.mod di folder yang sama dengan file app.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.