Specifica delle dipendenze

Le app eseguite nel runtime standard Go 1.11 possono utilizzare qualsiasi pacchetto compatibile con linux/amd64.

Utilizzo dei moduli Go

Ti consigliamo di utilizzare i moduli Go per gestire le dipendenze nella tua app Go, ma puoi continuare a utilizzare la modalità GOPATH precedente se non sei pronto per eseguire la migrazione ai moduli Go.

Quando esegui il deployment dell'app, App Engine utilizza il comando go build per creare l'app e quindi corrisponde al comportamento di Go stesso. Per assicurarti che la tua app utilizzi la modalità Module-Aware, esegui le seguenti operazioni nel tuo ambiente di sviluppo:

  • Crea il file go.mod del modulo nella stessa directory del file app.yaml. App Engine cerca nella directory corrente, poi nelle directory principali successive finché non trova un file go.mod.

    Se App Engine non trova un file go.mod, segue la modalità GOPATH.

  • Se hai impostato la variabile di ambiente GO111MODULE, assicurati che il valore della variabile attivi la modalità compatibile con i moduli. Quando esegui il deployment dell'app, App Engine controlla l'ambiente per GO111MODULE e corrisponde al comportamento di Go stesso. App Engine applica l'impostazione della variabile GO111MODULE solo se hai incluso un file go.mod per la tua app.

  • Non individuare la directory dell'app in $GOPATH/src o al di sotto. Se la tua app si trova in un punto qualsiasi dell'albero di directory $GOPATH/src, App Engine segue la modalità GOPATH anche se hai definito un file go.mod per la tua app.

Utilizzo di dipendenze private

App Engine non può scaricare le tue dipendenze private durante la procedura di build, pertanto devi includerle nel codice dell'applicazione al momento del deployment.

Per dichiarare le dipendenze private, devi utilizzare l'istruzione replace nel file go.mod. Il seguente esempio presuppone che la tua app si trovi nella directory /myapp/:

  1. Passa alla directory dell'app:

    cd /myapp
    
  2. Crea una directory contenente le tue dipendenze private:

    mkdir private
    

    Assicurati che la dipendenza privata si trovi nella directory private. Un approccio consiste nel creare un collegamento simbolico:

    mkdir private/private.example.com
    ln -s /path/to/private.example.com/foo private/private.example.com/foo
    
  3. Aggiorna il file go.mod per utilizzare l'istruzione replace per utilizzare la directory private per la dipendenza:

    go mod edit -replace=private.example.com/foo=./private/private.example.com/foo
    

    Il file go.mod ora dovrebbe avere il seguente aspetto:

    File go.mod finale

    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 originale

    module private.example.com/myapp
    
    require private.example.com/foo v1.2.3
    
  4. Non modificare la modalità di importazione e utilizzo del pacchetto privato. Il tuo estratto conto import dovrebbe essere simile a questo:

    import "private.example.com/foo"
    
  5. Includi la tua dipendenza privata nell'implementazione implementando l'app:

    gcloud app deploy