Implantar a partir do código-fonte

Veja nesta página como implantar novos serviços e novas revisões no Cloud Run diretamente do código-fonte usando apenas um comando da CLI gcloud run deploy, com a sinalização --source. Para ver um exemplo de como implantar um serviço Hello World, consulte Implantar usando os guias de início rápido da origem.

Nos bastidores, esse comando usa os buildpacks do Google Cloud e o Cloud Build para criar automaticamente imagens de contêiner a partir do código-fonte sem instalar o Docker na máquina ou configurar os buildpacks ou o Cloud Build. Ou seja, o comando único descrito acima faz o que exigiria os comandos gcloud builds submit e gcloud run deploy.

Observe que as implantações de origem usam o Artifact Registry para armazenar contêineres criados. Se o projeto ainda não tiver um repositório do Artifact Registry com o nome cloud-run-source-deploy na região em que você está implantando, esse recurso cria automaticamente um repositório do Artifact Registry com o nome cloud-run-source-deploy de dados.

Se houver um Dockerfile no diretório de código-fonte, o código-fonte enviado será criado usando esse Dockerfile. Se nenhum Dockerfile estiver presente no diretório do código-fonte, os buildpacks do Google Cloud detectarão automaticamente a linguagem usada e buscarão as dependências do código para criar uma imagem de contêiner pronta para produção, usando uma imagem de base segura gerenciada pelo Google. Toda vez que você implanta, as correções de segurança necessárias são selecionadas automaticamente a partir da imagem base.

Idiomas compatíveis

Além de fontes com um Dockerfile, é possível implantar da fonte com as seguintes linguagens:

  • Go
  • Node.js
  • Python
  • Java
  • Kotlin
  • .NET
  • Ruby
  • PHP

Leia mais detalhes sobre as versões de linguagem com suporte nos buildpacks do Google Cloud.

Limitações deste recurso

  • A implantação da origem usa o Artifact Registry. Portanto, esse recurso só está disponível em regiões compatíveis com o Artifact Registry.
  • A implantação a partir da origem usando gcloud run deploy --source é um recurso prático e não permite a personalização completa do build. Para ter mais controle, crie a imagem do contêiner usando o Cloud Build (usando gcloud builds submit, por exemplo) e, em seguida, implante a imagem do contêiner (usando gcloud run deploy --image, por exemplo).
  • A implantação de origem com buildpacks do Google Cloud define a data da última modificação dos arquivos de origem como 1º de janeiro de 1980. Esse é o comportamento padrão dos pacotes de compilação e foi projetado para ser compatível com builds reproduzíveis. Dependendo do framework da linguagem, isso pode afetar o armazenamento em cache de arquivos estáticos no navegador. Se o aplicativo for afetado por isso, o Google recomenda desativar os cabeçalhos HTTP etag e Last-Modified.
  • A implantação de origem com buildpacks do Google Cloud sempre usa gcr.io/buildpacks/builder:latest. Se a configuração de idioma ou SO de sua preferência não estiver disponível em latest, use um builder específico para criar uma imagem de aplicativo usando o builder que você preferir.

Antes de começar

  • Verifique se você configurou um novo projeto para o Cloud Run conforme descrito na página de configuração.
  • Se você precisa seguir uma política da organização de restrição de domínio que restringe invocações não autenticadas para seu projeto, será necessário acessar o serviço implantado, conforme descrito em Como testar serviços particulares.

Permissões necessárias para implantar

Para implantar a partir da origem, é necessário ter permissões para criar, armazenar a imagem do contêiner criada e implantar.

Você precisa ter UM dos seguintes papéis:

Como implantar

Para implantar a partir do código-fonte:

  1. Mude para o diretório de origem. Observe que o diretório de origem não requer um Dockerfile. No entanto, se um Dockerfile estiver presente, ele será usado.

  2. Crie e implante seu aplicativo:

    gcloud run deploy SERVICE --source .

    Substitua SERVICE pelo nome do serviço.

    Responda a todas as solicitações para instalar as APIs necessárias respondendo ao y quando solicitado. Você só precisa fazer isso uma vez para um projeto. Responda a outras solicitações fornecendo a plataforma e a região, se você não tiver definido os padrões delas, conforme descrito na página de configuração.

  3. Aguarde a conclusão da criação e da implantação. Quando terminar, uma mensagem semelhante a esta será exibida:

    Service [my-app] revision [my-app-00000-xxx] has been deployed and is serving 100 percent of traffic. Service URL: https://my-app-texampleq-uc.a.run.app

    Após a implantação, observe que essa revisão de serviço atende a 100% do tráfego.

Como automatizar a criação a partir da fonte

Como prática recomendada para evitar alterações sem versão na fonte local, o Google recomenda que você implante automaticamente quando as alterações forem enviadas ao seu repositório Git. Para facilitar esse processo, é possível conectar e configurar a implantação contínua no serviço do Cloud Run. Ao conectar seus repositórios do GitHub ao Cloud Run, é possível configurar versões e implantar seus repositórios sem escrever Dockerfiles ou arquivos de criação.

Para configurar versões automatizadas, configure a automação conforme descrito na página de versões contínuas, certificando-se de escolher a opção de criar a fonte com os Buildpacks.

A seguir

Depois de implantar um novo serviço, é possível realizar estas ações:

Automatize as compilações e as implantações dos serviços do Cloud Run usando os gatilhos do Cloud Build: