Como implantar no App Engine

Nesta página, explicamos como implantar aplicativos no App Engine usando o Cloud Build. Se você não estiver familiarizado com o Cloud Build, leia os guias de início rápido e a visão geral da configuração de build primeiro.

O App Engine é uma plataforma sem servidor totalmente gerenciada para desenvolver e hospedar aplicativos da Web em escala. Para mais informações sobre o App Engine, leia a documentação do App Engine.

Antes de começar

  • Ative a API App Engine.

    Ativar a API App Engine

  • Prepare o código-fonte do aplicativo. Seu código-fonte precisa ser armazenado em um repositório como GitHub ou Bitbucket.

  • Para executar os comandos gcloud nesta página, instale a Google Cloud CLI.

Permissões de gerenciamento de identidade e acesso obrigatórias

  1. No console Google Cloud , acesse a página Permissões do Cloud Build:

    Acesse Permissões

  2. Para a conta de serviço do Cloud Build especificada ou a conta de serviço padrão do Cloud Build, defina o status dos seguintes papéis como Ativado:

    • Administrador do App Engine (roles/appengine.appAdmin): permite que o Cloud Build implante novas versões no App Engine.
    • Administrador do Storage (roles/storage.admin): permite ler e gravar no Cloud Storage.
    • Gravador do Artifact Registry (roles/artifactregistry.writer): permite extrair imagens do Artifact Registry e gravar nele.
    • Gravador de registros (roles/logging.logWriter): permite que entradas de registro sejam gravadas no Cloud Logging.
    • Editor do Cloud Build (roles/cloudbuild.builds.editor): permite que sua conta de serviço execute builds.

Como configurar a implantação

O Cloud Build permite usar qualquer imagem de contêiner disponível publicamente para executar suas tarefas. Para fazer isso, especifique a imagem em uma step de build no arquivo de configuração do Cloud Build.

O App Engine fornece o comando gcloud app deploy, que cria uma imagem com o código-fonte e implanta essa imagem no App Engine. Use a imagem cloud-sdk como uma etapa de build no arquivo de configuração para invocar os comandos gcloud na imagem. Os argumentos inseridos nessa etapa de compilação são transmitidos diretamente para a CLI gcloud, o que permite executar qualquer comando gcloud nessa imagem.

Para implantar um aplicativo no App Engine, siga estas etapas:

  1. Crie um arquivo de configuração do Cloud Build com o nome cloudbuild.yaml ou cloudbuild.json.

  2. No arquivo de configuração:

    • Adicione um campo name para especificar a etapa de build cloud-sdk.
    • Adicione um campo entrypoint para usar a ferramenta bash quando cloud-sdk for invocado.
    • No campo args, invoque o comando gcloud app deploy e defina um timeout para o App Engine usar quando invocar o Cloud Build. Isso é necessário porque as etapas de build do Cloud Build e os builds têm um tempo limite padrão de 10 minutos, enquanto as implantações do App Engine podem levar mais tempo para concluírem. Especificar um tempo limite maior garante que o tempo limite da build não seja atingido se gcloud app deploy demorar mais de 10 minutos para ser concluído.

      Erros de tempo limite ao usar o ambiente padrão do App Engine: é possível configurar tempos limite conforme descrito aqui ao usar o ambiente flexível do App Engine. O ambiente padrão do App Engine não permite que o tempo limite da versão seja configurado. Se você estiver usando o Cloud Build para implantar no ambiente padrão do App Engine e o build falhar com um erro de tempo limite, considere o uso do ambiente flexível do App Engine ouCloud Run em vez do ambiente padrão do App Engine.

    • Adicione um valor build timeout de mais de 10 minutos.

    YAML

    steps:
    - name: 'gcr.io/google.com/cloudsdktool/cloud-sdk'
      entrypoint: 'bash'
      args: ['-c', 'gcloud config set app/cloud_build_timeout 1600 && gcloud app deploy']
    timeout: '1600s'
    

    JSON

    {
      "steps": [
      {
        "name": "gcr.io/google.com/cloudsdktool/cloud-sdk",
        "entrypoint": "bash",
        "args": [
          "-c",
          "gcloud config set app/cloud_build_timeout 1600 && gcloud app deploy"
         ]
      }
      ],
      "timeout": "1600s"
    }
    
  3. Inicie o build, em que SOURCE_DIRECTORY é o caminho ou o URL do código-fonte e REGION é uma das regiões de build compatíveis para iniciar o build:

     gcloud builds submit --region=REGION SOURCE_DIRECTORY
    

Implantação contínua

É possível automatizar a implantação de seu software no Google App Engine criando gatilhos do Cloud Build. Configure os acionadores para criar e implantar imagens sempre que atualizar o código-fonte.

Para automatizar sua implantação no App Engine:

  1. No repositório, adicione um arquivo de configuração com etapas para invocar o comando gcloud app deploy:

    YAML

    steps:
    - name: 'gcr.io/google.com/cloudsdktool/cloud-sdk'
      entrypoint: 'bash'
      args: ['-c', 'gcloud config set app/cloud_build_timeout 1600 && gcloud app deploy']
    timeout: '1600s'
    

    JSON

    {
      "steps": [
      {
        "name": "gcr.io/google.com/cloudsdktool/cloud-sdk",
        "entrypoint": "bash",
        "args": [
          "-c",
          "gcloud config set app/cloud_build_timeout 1600 && gcloud app deploy"
         ]
      }
      ],
      "timeout": "1600s"
    }
    
  2. Crie um gatilho de compilação com o arquivo de configuração criado na etapa anterior:

    1. Abra a página Gatilhos no console Google Cloud :

      Abrir a página "Gatilhos"

    2. Selecione o projeto no menu suspenso do seletor de projetos na parte superior da página.

    3. Clique em Abrir.

    4. Clique em Criar gatilho.

      Na página Criar gatilho, especifique as seguintes configurações:

      1. Insira um nome para o gatilho.

      2. Selecione o evento de repositório para iniciar o gatilho.

      3. Selecione o repositório que contém o código-fonte e o arquivo de configuração de build.

      4. Especifique a expressão regular do nome da ramificação ou da tag que vai iniciar o gatilho.

      5. Configuração: escolha o arquivo de configuração do build que você criou anteriormente.

    5. Clique em Criar para salvar o gatilho de compilação.

Sempre que enviar um novo código para seu repositório, você iniciará automaticamente um build e implantará seu serviço do App Engine.

Para mais informações sobre como criar gatilhos do Cloud Build, consulte Como criar e gerenciar gatilhos de build.

A seguir