Especificar as dependências

É possível usar qualquer pacote compatível com linux/amd64 com instâncias em execução no ambiente flexível do App Engine. Nestas instruções, pressupomos que você esteja usando o comando go get para receber os pacotes diretamente de repositórios compatíveis, como GitHub, Bitbucket, LaunchPad e outros.

A partir da versão 1.22 do Go:

  • Não é possível usar go get fora de um módulo no modo GOPATH legado (GO111MODULE=off). Para mais informações, consulte Ferramentas.

  • O Go recomenda o uso de um arquivo go.mod para gerenciar dependências. Para instalar dependências durante a implantação, inclua um arquivo go.mod na mesma pasta que o arquivo app.yaml. Para mais informações sobre versões do Go e como gerenciar dependências dos diretórios de fornecedores, consulte GOPATH e módulos.

Declarar e gerenciar dependências

Os aplicativos do Go são organizados em pacotes que espelham a estrutura de diretórios dos arquivos do seu código-fonte. Quando você usa uma declaração de importação, os caminhos relativos na importação são interpretados. Os caminhos de importação válidos são caminhos totalmente qualificados relativos ao subdiretório src de todos os diretórios especificados em GOPATH.

Por exemplo, considere um app de exemplo em que você define o seguinte:

  • Módulo GOPATH:

     export GOPATH=/home/fred/go.
    
  • Arquivo src1-1.go:

    import "foo/bar"
    
  • A CLI gcloud procura o pacote foo/bar no local /home/fred/go/src/foo/bar quando você executa ou implanta o app.

Se você incluir fontes de pacotes em GOPATH, é necessário tomar cuidado para não colocar o código-fonte no diretório do aplicativo, onde o app.yaml está localizado. Se isso acontecer, problemas menores poderão ocorrer porque um pacote pode ser carregado duas vezes: uma vez para o caminho relativo ao diretório de um serviço e novamente para o caminho totalmente qualificado. Para evitar problemas, a CLI gcloud verificará o diretório do app e o GOPATH e, em seguida, informará um erro se um conflito for detectado.

Para melhores resultados, estas são as nossas recomendações:

  • Crie um diretório separado no diretório do app para cada serviço.
  • O diretório de cada serviço precisa conter o arquivo app.yaml do serviço e um ou mais arquivos .go.
  • Não inclua subdiretórios no diretório de um serviço.
  • O GOPATH precisa especificar um diretório que esteja fora do diretório do app e conter todas as dependências importadas pelo app.

Fazer o download dos pacotes necessários

É possível usar o comando go get para fazer download de pacotes. Por exemplo, para fazer o download de packagename em my_repo no GitHub:

go get github.com/my_repo/packagename

Implantar no App Engine

Para implantar o aplicativo no App Engine, é necessário implantar as bibliotecas necessárias pelo app junto com o código do aplicativo. Para ver os detalhes completos, consulte Como testar e implantar o aplicativo.