Especifique dependências

Pode usar qualquer pacote compatível com linux/amd64 com instâncias em execução no ambiente flexível do App Engine. Estas instruções pressupõem que está a usar o comando go get para obter os pacotes diretamente de repositórios suportados, como o GitHub, o Bitbucket, o LaunchPad e outros.

A partir da versão 1.22 do Go e posteriores:

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

  • O Go recomenda que use um ficheiro go.mod para gerir dependências. Para instalar dependências durante a implementação, inclua um ficheiro go.mod na mesma pasta que o ficheiro app.yaml. Para mais informações sobre as versões do Go e a gestão das dependências dos diretórios de fornecedores, consulte o artigo GOPATH e módulos.

Declare e faça a gestão de dependências

As aplicações Go estão organizadas em pacotes que refletem a estrutura de diretórios dos seus ficheiros de origem. Quando 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 no seu GOPATH.

Por exemplo, considere uma app de exemplo em que define o seguinte:

  • Módulo GOPATH:

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

    import "foo/bar"
    
  • A CLI gcloud procura o pacote foo/bar na localização /home/fred/go/src/foo/bar quando executa ou implementa a app.

Se incluir as origens dos pacotes em GOPATH, tem de ter cuidado para não colocar o código fonte no diretório da app onde se encontra o ficheiro app.yaml. Se isso acontecer, podem ocorrer problemas subtis porque um pacote pode ser carregado duas vezes, uma vez para o caminho relativo ao diretório de um serviço e outra vez para o caminho totalmente qualificado. Para evitar problemas, a CLI gcloud vai analisar o diretório da sua app e GOPATH e, em seguida, comunicar um erro se for detetado um conflito.

Para obter os melhores resultados, recomendamos o seguinte:

  • Crie um diretório separado no diretório da sua app para cada serviço.
  • O diretório de cada serviço deve conter o ficheiro app.yaml do serviço e um ou mais ficheiros .go.
  • Não inclua subdiretórios no diretório de um serviço.
  • O GOPATH deve especificar um diretório que esteja fora do diretório da sua app e conter todas as dependências que a sua app importa.

Transfira os pacotes necessários

Pode usar o comando go get para transferir pacotes. Por exemplo, para transferir packagename do GitHub my_repo:

go get github.com/my_repo/packagename

Implemente no App Engine

Para implementar a sua aplicação no App Engine, tem de implementar as bibliotecas necessárias para a sua app juntamente com o código da aplicação. Para ver detalhes completos, consulte o artigo Testar e implementar a sua aplicação.