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 modoGOPATH
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 ficheirogo.mod
na mesma pasta que o ficheiroapp.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.