O tempo de execução do Go

O tempo de execução do Go é a pilha de software responsável por instalar o código e as dependências da sua aplicação e, em seguida, executar essa aplicação no ambiente flexível.

Versões do Go

O Go 1.25 usa buildpacks. Para ver a lista completa das versões do Go suportadas e a respetiva versão do Ubuntu, consulte o cronograma de suporte de tempo de execução.

Para usar uma versão do Go suportada, tem de:

  • Instale a versão gcloud CLI 420.0.0 ou posterior. Pode atualizar as ferramentas da CLI executando o comando gcloud components update. Para ver a versão instalada, pode executar o comando gcloud version.

  • 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.

    Por exemplo, a estrutura de pastas da sua app com go.mod tem de representar:

    <application-root>/
    --> app.yaml
    --> go.mod
    --> Other source files used in your application.
    
    
  • Inclua as definições runtime_config e operating_system no ficheiro app.yaml para especificar um sistema operativo.

  • Opcionalmente, pode especificar uma versão do tempo de execução incluindo a definição runtime_version no seu app.yaml. Por predefinição, é usada a versão mais recente do Go se a definição runtime_version não for especificada.

Exemplos

  • Para especificar o Go 1.25 no Ubuntu 22:

    runtime: go
    env: flex
    
    runtime_config:
        operating_system: "ubuntu22"
        runtime_version: "1.25"
    
  • Para especificar a versão do Go mais recente suportada no Ubuntu 22:

      runtime: go
      env: flex
    
      runtime_config:
          operating_system: "ubuntu22"
    

A sua app usa a versão estável mais recente da versão especificada no ficheiro app.yaml. O App Engine é atualizado automaticamente para novas revisões de patches, mas não atualiza automaticamente a versão principal.

Por exemplo, a sua aplicação pode ser implementada no Go 1.18.10 e, posteriormente, pode ser atualizada automaticamente para o Go 1.18.11, mas não é atualizada automaticamente para a versão principal Go 1.19.

Se escolher o Go 1.25 no ficheiro app.yaml, vai ter acesso à versão patch mais recente do Go 1.25 disponível.

  runtime: go
  env: flex

  runtime_config:
      operating_system: "ubuntu22"
      runtime_version: "1.25"

Consulte a referência app.yaml para mais informações.

Versões de tempo de execução anteriores

Para usar o Go versão 1.15 e anterior, especifique uma versão na definição runtime usando o formato go1.x no seu ficheiro app.yaml. Por exemplo:

  runtime: go1.14
  env: flex

Se não for especificada nenhuma versão, a versão predefinida de go1.11 é selecionada automaticamente.

A sua app usa a versão estável mais recente da versão especificada no ficheiro app.yaml. O App Engine é atualizado automaticamente para novas revisões de patches, mas não atualiza automaticamente a versão principal.

Por exemplo, a sua aplicação pode ser implementada no Go 1.14.10 e, posteriormente, pode ser atualizada automaticamente para o Go 1.14.11, mas não é atualizada automaticamente para a versão principal Go 1.15.

Se escolher a versão de tempo de execução do Go go1.15 no ficheiro app.yaml, vai ter acesso à versão mais recente da versão 1.15, por exemplo, 1.15.15.

  runtime: go1.15
  env: flex

Suporte para outros tempos de execução do Go

Se precisar de usar uma versão do Go que não seja suportada, pode criar um tempo de execução personalizado e selecionar uma imagem base válida com a versão do Go de que precisa.

Para imagens base fornecidas pela Google ou imagens base do Docker Go, consulte o artigo Criar tempos de execução personalizados.

Importe pacotes

O código é compilado quando implementa a app no App Engine. Quando executa o comando de implementação, as dependências da sua app são primeiro recolhidas a partir do seu GOPATH local e, em seguida, são todas enviadas para o servidor de compilação. Quaisquer dependências em falta, por exemplo, bibliotecas de terceiros, resultam em falhas de compilação.

Para evitar falhas de compilação e garantir que todas as dependências da sua app são implementadas com o seu código, deve testar a app localmente antes de a implementar.

Prolongar o tempo de funcionamento

Para obter instruções sobre como estender e personalizar o tempo de execução do Go, leia o criador do tempo de execução do Go no GitHub.

Servidor de metadados

Cada instância da sua aplicação pode usar o servidor de metadados do Compute Engine para consultar informações sobre a instância, incluindo o respetivo nome do anfitrião, endereço IP externo, ID da instância, metadados personalizados e informações da conta de serviço. O App Engine não lhe permite definir metadados personalizados para cada instância, mas pode definir metadados personalizados ao nível do projeto e lê-los a partir das instâncias do App Engine e do Compute Engine.

Use o pacote cloud.google.com/go/compute/metadata para aceder ao servidor de metadados.