Esta página descreve como implementar um novo conjunto de trabalhadores ou uma revisão do conjunto de trabalhadores no Cloud Run diretamente a partir do código fonte através de um único comando da CLI gcloud,
gcloud beta run worker-pools deploy com a flag
--source.
Nos bastidores, este comando usa os
buildpacks do Google Cloud
e o Cloud Build para criar automaticamente imagens de contentores a partir do seu código-fonte
sem ter de instalar o Docker na sua máquina nem configurar buildpacks ou
o Cloud Build. Por predefinição, o Cloud Run usa o tipo de máquina predefinido fornecido pelo Cloud Build.
A execução de 
gcloud beta run worker-pools deploy
 elimina a necessidade de executar também o comando
gcloud builds submit.
Tenha em atenção que as implementações de origem usam o Artifact Registry para armazenar contentores criados. Se o seu projeto ainda não tiver um repositório do Artifact Registry com o nome cloud-run-source-deploy na região para a qual está a fazer a implementação, esta funcionalidade cria automaticamente um repositório do Artifact Registry com o nome cloud-run-source-deploy.
Se existir um Dockerfile no diretório do código-fonte, o código-fonte carregado é criado com esse Dockerfile. Se não existir nenhum Dockerfile no diretório de código-fonte, os buildpacks do Google Cloud detetam automaticamente a linguagem que está a usar e obtêm as dependências do código para criar uma imagem de contentor pronta para produção, usando uma imagem base segura gerida pela Google.
Idiomas suportados
Além das origens com um Dockerfile, a implementação a partir da origem suporta os seguintes idiomas através dos buildpacks do Google Cloud:
- Ir
 - Node.js
 - Python
 - Java
 - Kotlin
 - Groovy
 - Scala
 - .NET
 - Ruby
 - PHP
 
Limitações desta funcionalidade
- A implementação a partir da origem usa o Artifact Registry e o Cloud Build, pelo que esta funcionalidade só está disponível nas regiões suportadas pelo Artifact Registry e pelo Cloud Build.
 - A implementação a partir da origem é uma funcionalidade
de conveniência e não permite a personalização total da compilação. Para ter mais controlo, crie a imagem de contentor com o Cloud Build, por exemplo, usando 
gcloud builds submite, em seguida, implemente a imagem de contentor usando, por exemplo,gcloud beta run worker-pools deploy --image. - A implementação a partir da origem com os buildpacks do Google Cloud define a data da última modificação dos ficheiros de origem como 1 de janeiro de 1980. Este é o comportamento predefinido dos buildpacks e foi concebido para suportar compilações reproduzíveis. Dependendo da sua framework de idiomas, isto pode afetar o armazenamento em cache no navegador de ficheiros estáticos. Se
a sua aplicação for afetada por esta situação, a Google recomenda que desative os cabeçalhos HTTP 
etageLast-Modifiedna sua aplicação. - A implementação a partir da origem com os buildpacks do Google Cloud usa sempre o 
gcr.io/buildpacks/builder:latest. Se a sua configuração de idioma ou SO preferida não estiver disponível nolatest, use um criador específico para criar uma imagem da aplicação com o seu criador preferido. Pode implementar o seu conjunto de trabalhadores a partir da origem usando Kotlin e outras linguagens JVM, como Java. A linguagem que usa tem de estar em conformidade com as seguintes regras:
- Pode criar a aplicação com o Maven ou o Gradle.
 - O ficheiro de compilação contém todos os plug-ins necessários para as classes de produtos.
 
Antes de começar
- Certifique-se de que configurou um novo projeto para o Cloud Run, conforme descrito na página de configuração.
 - 
  
   
   
     
   
  
 
  
  
    
      
Enable the Cloud Run Admin API and Cloud Build APIs.
Roles required to enable APIs
To enable APIs, you need the Service Usage Admin IAM role (
roles/serviceusage.serviceUsageAdmin), which contains theserviceusage.services.enablepermission. Learn how to grant roles.Depois de ativar a API Cloud Run Admin, a conta de serviço predefinida do Compute Engine é criada automaticamente.
 
Funções necessárias
O utilizador ou o administrador tem de conceder à conta de implementação e à conta de serviço do Cloud Build as seguintes funções do IAM.
Clique para ver as funções necessárias para a conta do implementador
Para receber as autorizações de que precisa para criar e implementar a partir da origem, peça ao seu administrador que lhe conceda as seguintes funções de IAM:
- Programador de origem do Cloud Run (
roles/run.sourceDeveloper) no seu projeto - Consumidor de utilização do serviço (
roles/serviceusage.serviceUsageConsumer) no seu projeto - Utilizador da conta de serviço (
roles/iam.serviceAccountUser) na identidade do serviço do Cloud Run 
Clique para ver as funções necessárias para a conta de serviço do Cloud Build
O Cloud Build usa automaticamente a
        conta de serviço predefinida do Compute Engine como a conta de serviço predefinida do Cloud Build para compilar o seu código-fonte e o
      recurso do Cloud Run, a menos que substitua este comportamento. Para que o Cloud Build compile as suas origens, peça ao administrador para conceder a função
      Cloud Run Builder
      (roles/run.builder) à conta de serviço predefinida do Compute Engine no seu projeto:
gcloud projects add-iam-policy-binding PROJECT_ID \ --member=serviceAccount:PROJECT_NUMBER-compute@developer.gserviceaccount.com \ --role=roles/run.builder
Substitua PROJECT_NUMBER pelo seu Google Cloud
      número do projeto e PROJECT_ID pelo seu Google Cloud
      ID do projeto. Para ver instruções detalhadas sobre como encontrar o ID e o número do projeto,
      consulte o artigo Criar
      e gerir projetos.
A concessão da função de criador do Cloud Run à conta de serviço predefinida do Compute Engine demora alguns minutos a propagar.
Para ver uma lista de funções e autorizações de IAM associadas ao Cloud Run, consulte os artigos Funções de IAM do Cloud Run e Autorizações de IAM do Cloud Run. Se o seu conjunto de trabalhadores do Cloud Run interage com Google Cloud APIs, como as bibliotecas de clientes da nuvem, consulte o guia de configuração da identidade do serviço. Para mais informações sobre a atribuição de funções, consulte as autorizações de implementação e faça a gestão do acesso.
Implemente a partir da origem
Para implementar a partir do código-fonte:
1.
In the Google Cloud console, activate Cloud Shell.
At the bottom of the Google Cloud console, a Cloud Shell session starts and displays a command-line prompt. Cloud Shell is a shell environment with the Google Cloud CLI already installed and with values already set for your current project. It can take a few seconds for the session to initialize.
Altere para o diretório de origem. O diretório de origem usa um Dockerfile, se estiver presente, embora não seja obrigatório.
Crie e implemente o seu grupo de trabalhadores:
 Substituagcloud beta run worker-pools deploy WORKERPOOL --source .
WORKERPOOLpelo nome que quer para o seu conjunto de trabalhadores.Responda a todas as instruções para instalar as APIs necessárias respondendo
yquando lhe for pedido. Só tem de fazer isto uma vez por projeto. Responda a outros pedidos fornecendo a plataforma e a região, se não tiver definido predefinições para estas, conforme descrito na página de configuração.Aguarde pela conclusão da compilação e da implementação. Quando terminar, o Cloud Run apresenta uma mensagem de êxito.
Automatizar a compilação a partir da origem
Como prática recomendada para evitar alterações sem versão na origem local, a Google recomenda que faça a implementação automaticamente quando as alterações são enviadas para o seu repositório Git. Para facilitar este processo, pode ligar e configurar a implementação contínua ao seu conjunto de trabalhadores do Cloud Run. Ao associar os seus repositórios do GitHub ao Cloud Run, pode configurar compilações e implementar os seus repositórios sem escrever Dockerfiles nem ficheiros de compilação.
O que se segue?
Depois de implementar um conjunto de trabalhadores do Cloud Run, pode fazer o seguinte:
- Veja os registos do conjunto de trabalhadores
 - Monitorize conjuntos de trabalhadores
 - Defina limites de memória
 - Defina variáveis de ambiente
 - Faça a gestão do grupo de trabalhadores
 - Faça a gestão das revisões do conjunto de trabalhadores