Menentukan Dependensi

Aplikasi yang berjalan dalam runtime standar Go 1.11 dapat menggunakan paket apa pun yang kompatibel dengan linux/amd64.

Menggunakan modul Go

Sebaiknya gunakanmodul Go untuk mengelola dependensi dalam aplikasi Go Anda, tetapi Anda dapat terus menggunakan mode GOPATH yang lebih lama jika belum siap untukbermigrasi ke modul Go.

Saat Anda men-deploy aplikasi, App Engine menggunakan perintah go build untuk membangun aplikasi sehingga sesuai dengan perilaku Go itu sendiri. Untuk memastikan bahwa aplikasi Anda menggunakan mode sadar modul, lakukan hal-hal berikut di lingkungan pengembangan:

  • Buat file go.mod modul Anda di dalam direktori yang sama dengan file app.yaml Anda. App Engine menelusuri direktori saat ini, lalu beberapa direktori induk berurutan hingga menemukan file go.mod.

    Jika App Engine tidak menemukan file go.mod, maka App Engine akan mengikuti mode GOPATH.

  • Jika Anda menyetel variabel lingkungan GO111MODULE, pastikan nilai variabel mengaktifkan mode sadar modul. Saat Anda men-deploy aplikasi, App Engine akan memeriksa lingkungan Anda untuk menemukan GO111MODULE dan mencocokkan perilaku Go itu sendiri. App Engine hanya menerapkan setelan variabel GO111MODULE jika Anda telah menyertakan file go.mod untuk aplikasi Anda.

  • Jangan tempatkan direktori aplikasi Anda di dalam atau di bawah $GOPATH/src. Jika aplikasi Anda berada di mana saja dalam hierarki direktori $GOPATH/src, App Engine akan mengikuti mode GOPATH meskipun Anda telah menentukan file go.mod untuk aplikasi Anda.

Menggunakan dependensi pribadi

App Engine tidak dapat mendownload dependensi pribadi Anda selama proses build, sehingga Anda harus menyertakannya bersama kode aplikasi setelah deployment.

Anda harus menggunakan perintah replace dalam file go.mod untuk mendeklarasikan dependensi pribadi. Contoh berikut mengasumsikan bahwa aplikasi Anda berada di direktori /myapp/:

  1. Ubah ke direktori aplikasi Anda:

    cd /myapp
    
  2. 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
    
  3. Update file go.mod Anda untuk menggunakan perintah replace agar dapat menggunakan direktori private 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 akhir

    module 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 asli

    module private.example.com/myapp
    
    require private.example.com/foo v1.2.3
    
  4. Jangan mengubah cara Anda mengimpor dan menggunakan paket pribadi. Pernyataan import Anda akan terlihat seperti:

    import "private.example.com/foo"
    
  5. Sertakan dependensi pribadi Anda dalam deployment dengan men-deploy aplikasi Anda:

    gcloud app deploy