Como implantar no Cloud Functions

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

O Cloud Functions é um ambiente de execução sem servidor para criar e conectar serviços em nuvem. Com ele, é possível escrever funções simples de única finalidade que são vinculadas a eventos emitidos pela infraestrutura e pelos serviços em nuvem. A função é acionada quando um evento em análise é disparado. Para mais informações sobre o Cloud Functions, leia a documentação do Cloud Functions.

Antes de começar

  • Ative a API Cloud Functions:

    Ativar a API Cloud Functions

  • Conceda o papel Desenvolvedor do Cloud Functions à 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 Desenvolvedor do Cloud Functions como Ativo.

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

  • Tenha em mãos o código-fonte do aplicativo que você quer compilar e implantar no Cloud Functions. O código-fonte precisa ser armazenado em um repositório, como o Cloud Source Repositories, GitHub ou Bitbucket.

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 Cloud Functions oferece o comando gcloud functions deploy, que implanta a função do diretório que contém o código dela. Você pode usar a imagem cloud-sdk como uma etapa do build no arquivo de configuração para invocar os comandos gcloud na imagem. Os argumentos transmitidos a essa etapa de criação são transmitidos diretamente para a Google Cloud CLI, permitindo que você execute qualquer comando gcloud nessa imagem.

Para implantar um aplicativo no Cloud Functions, siga estas etapas:

  1. No diretório raiz do projeto, crie o arquivo de configuração do Cloud Build chamado cloudbuild.yaml ou cloudbuild.json.
  2. No arquivo de configuração:

    • Adicione um campo name e especifique a etapa de criação gcloud.
    • Adicione functions deploy ao campo args para invocar o comando gcloud functions deploy. Para ver as opções de configuração disponíveis, consulte a referência do gcloud functions deploy.
    • --source=. indica que o código-fonte está no diretório de trabalho atual.

    YAML

    steps:
    - name: 'gcr.io/google.com/cloudsdktool/cloud-sdk'
      args:
      - gcloud
      - functions
      - deploy
      - FUNCTION_NAME
      - --region=FUNCTION_REGION
      - --source=.
      - --trigger-http
      - --runtime=RUNTIME
    

    JSON

    {
     "steps": [
      {
         "name": "gcr.io/google.com/cloudsdktool/cloud-sdk",
         "args": [
           "gcloud",
           "functions",
           "deploy",
            [
              "FUNCTION_NAME"
            ],
            "--region=FUNCTION_REGION",
            "--source=.",
            "--trigger-http",
            "--runtime=RUNTIME"
         ]
       }
      ]
    }
    

    Substitua os valores de marcador no arquivo de configuração acima pelo seguinte:

    • FUNCTION_NAME é o nome do Cloud Functions que você está implantando; Se você estiver atualizando uma função existente, esse valor precisará corresponder ao nome da função que você está atualizando.
    • FUNCTION_REGION é a região em que você está implantando o Cloud Functions. Para ver uma lista de regiões compatíveis, consulte Locais do Cloud Functions.
    • --trigger-http é o tipo de gatilho desta função. Neste caso, uma solicitação HTTP (webhook).
    • RUNTIME é o ambiente de execução em que a função será executada.

    Para mais informações sobre como usar o gcloud functions deploy, consulte a documentação do Cloud Functions.

  3. Inicie a compilação usando o arquivo de configuração criado na etapa anterior:

     gcloud builds submit --region=REGION --config CONFIG_FILE_PATH SOURCE_DIRECTORY
    

    Substitua os valores de marcador no arquivo de configuração acima pelo seguinte:

    • CONFIG_FILE_PATH é o caminho para o arquivo de configuração da compilação;
    • SOURCE_DIRECTORY é o caminho ou o URL do código-fonte.
    • REGION é uma das regiões de build compatíveis.

    Se você não especificar CONFIG_FILE_PATH e SOURCE_DIRECTORY no comando gcloud builds submit, o Cloud Build presumirá que o arquivo de configuração e o código-fonte estão no diretório de trabalho atual.

Implantação contínua

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

Para automatizar a implantação no Cloud Functions:

  1. Na raiz do repositório, adicione um arquivo de configuração com etapas para invocar o comando gcloud functions deploy:

    YAML

    steps:
    - name: 'gcr.io/google.com/cloudsdktool/cloud-sdk'
      args:
      - gcloud
      - functions
      - deploy
      - FUNCTION_NAME
      - --region=FUNCTION_REGION
      - --source=.
      - --trigger-http
      - --runtime=RUNTIME
    

    JSON

    {
     "steps": [
      {
         "name": "gcr.io/google.com/cloudsdktool/cloud-sdk",
         "args": [
           "gcloud",
           "functions",
           "deploy",
            [
              "FUNCTION_NAME"
            ],
            "--region=FUNCTION_REGION",
            "--source=.",
            "--trigger-http",
            "--runtime=RUNTIME"
         ]
       }
      ]
    }
    

    Substitua os valores de marcador no arquivo de configuração acima pelo seguinte:

    • FUNCTION_NAME é o nome do Cloud Functions que você está implantando; Se você estiver atualizando uma função existente, esse valor precisará corresponder ao nome da função que você está atualizando.
    • FUNCTION_REGION é a região em que você está implantando o Cloud Functions. Para ver uma lista de regiões compatíveis, consulte Locais do Cloud Functions.
    • --trigger-http é o tipo de gatilho desta função. Neste caso, uma solicitação HTTP (webhook).
    • RUNTIME é o ambiente de execução em que a função será executada.
  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 na parte superior da página.

    3. Clique em Criar gatilho.

    4. No campo Nome, insira um nome para o gatilho.

    5. Em Região, selecione a região do gatilho.

    6. Em Evento, selecione o evento do repositório para iniciar o gatilho.

    7. Em Origem, selecione o repositório e o nome da ramificação ou da tag que iniciará o gatilho. Para mais informações sobre como especificar quais ramificações precisam ser criadas automaticamente, consulte Como criar um gatilho de compilação.

    8. Em Configuração, selecione Arquivo de configuração do Cloud Build (YAML ou JSON)

    9. No campo local do arquivo de configuração do Cloud Build, digite cloudbuild.yaml depois do /.

    10. Clique em Criar para salvar o gatilho de build.

A qualquer momento que você enviar um novo código ao repositório, acionará automaticamente uma build e implantará no Cloud Functions.

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

A seguir