Como implantar no App Engine

Nesta página, explicamos como implantar aplicativos no Google 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

Permissões do IAM obrigatórias

Conceda o papel Administrador do App Engine e Usuário da conta de serviço à conta de serviço do Cloud Build:

  1. Abra a página Configurações do Cloud Build:

    Abrir a página "Configurações do Cloud Build"

  2. Defina o status do papel Administrador do App Engine e do papel Usuário da conta de serviço como Ativado.

Como configurar a implantação

O Cloud Build permite que você use 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 compilação no arquivo de configuração para invocar os comandos gcloud na imagem. Os argumentos inseridos nessa etapa de build transmitidos diretamente para a ferramenta 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 sua compilação falhar com um erro de tempo limite, considere usar o ambiente flexível do App Engine ou o Cloud 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:

     gcloud builds submit 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 do 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 o regex do nome da ramificação ou da tag que iniciará o gatilho.

      5. Configuração: escolha o arquivo de configuração da versão 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