Como especificar dependências no Go

O Cloud Functions no Go deve fornecer todas as suas dependências por meio dos módulos Go com um arquivo go.mod ou um diretório vendor. Sua função não pode especificar dependências usando os módulos Go e um diretório vendor ao mesmo tempo.

O ambiente de execução Go inclui vários pacotes do sistema no ambiente de execução. Se a função usar uma dependência que exija um pacote que não esteja listado, será possível solicitá-lo.

Como usar os módulos do Go

O Cloud Functions é compatível com a funcionalidade experimental de módulos (em inglês) do Go, que permite especificar dependências em um arquivo go.mod na raiz do projeto. Quando você implanta a função, as dependências especificadas no arquivo go.mod são buscadas e criadas automaticamente.

O comportamento dos módulos Go varia conforme o desenvolvimento ocorre dentro ou fora do GOPATH. Para determinar se você está dentro do GOPATH:

  1. Navegue até o diretório do projeto.

  2. Encontre seu GOPATH executando o comando:

    go env GOPATH
    

    Isso gera uma linha semelhante a:

    GOPATH=YOUR_GOPATH
    
  3. Encontre o diretório de trabalho atual executando:

    pwd
    

Se o diretório de trabalho começa com YOUR_GOPATH, você está dentro do GOPATH. Nesse caso, gere o arquivo go.mod executando os três comandos a seguir:

export GO111MODULE=on
go mod init
go mod tidy

Se o diretório de trabalho não começar com YOUR_GOPATH, você estará fora do GOPATH. Neste caso, gere seu arquivo go.mod executando os comandos:

go mod init MODULE
go mod tidy

No exemplo acima, MODULE é o nome do módulo. Por exemplo, o nome do módulo pode ser example.com/myproject. O comando go detecta automaticamente o nome do módulo quando você está dentro do GOPATH.

Depois de criar um arquivo go.mod, é possível usar o comando go get para buscar dependências e adicioná-las automaticamente ao projeto. Exemplo:

go get DEPENDENCY

No exemplo acima, DEPENDENCY é uma dependência que você quer adicionar à função. Por exemplo, o comando go get cloud.google.com/go/storage adiciona a biblioteca de cliente do Cloud Storage à função.

Como usar um diretório de vendor

O Cloud Functions também permite incluir dependências por meio de um diretório vendor (em inglês). Na maioria das vezes, os diretórios vendor são mantidos com um gerenciador de dependências. É possível usar qualquer gerenciador de dependências que você preferir. Por exemplo, é possível usar a funcionalidade de módulos Go para criar um diretório vendor a partir do arquivo go.mod.

Se você tiver um arquivo go.mod e um diretório vendor, o diretório vendor será ignorado ao implantar a função. É possível usar um arquivo .gcloudignore para evitar o upload dos arquivos go.mod e go.sum. Neste caso, o conteúdo do diretório vendor será respeitado:

  1. Crie um arquivo .gcloudignore na raiz do diretório do projeto com o seguinte conteúdo:

    go.mod
    go.sum
    
    # Also ignore Git directories. Delete the following two lines if you want to
    # upload them.
    .git
    .gitignore
    
  2. Crie um diretório vendor usando o conteúdo do arquivo go.mod. Para isso, execute o seguinte comando:

    go mod vendor
    

Como usar dependências privadas

Se as dependências da função estiverem hospedadas em um repositório que não seja acessível publicamente, você deverá usar um diretório vendor para buscar as dependências antes de implantar sua função. Se você planeja usar um arquivo go.mod, consulte as instruções acima para evitar conflitos entre o arquivo go.mod e o diretório vendor.

Esta página foi útil? Conte sua opinião sobre:

Enviar comentários sobre…

Cloud Functions Documentation