Pré-requisitos:
- Conta no Google Cloud Platform (GCP)
- Docker instalado
- Repositório no GitHub
Repositório que pode ser usado para auxiliar e como exemplo: https://github.com/camilla-m/descomplicando-devops.git
Passo 1: Criar um projeto Node.js
Para este passo, você pode seguir este tutorial: https://nodejs.org/en/docs/guides/nodejs-docker-webapp
Passo 2: Configurar o Google Cloud Platform (GCP)
Acesse o Google Cloud Console (https://console.cloud.google.com).
Crie um novo projeto ou selecione um projeto existente.
Ative as APIs necessárias: Google Cloud Build API e Google Cloud Run API.
Passo 3: Configurar a pipeline no GCP
Crie um arquivo cloudbuild.yaml na pasta raiz do seu projeto com o seguinte conteúdo:
steps:
# Build the Docker image
- name: 'gcr.io/cloud-builders/docker'
args: ['build', '-t', 'us-central1-docker.pkg.dev/$PROJECT_ID/hello-repo/cicd-teste:1.0', '.']
# Push the Docker image to Artifact Registry
- name: 'gcr.io/cloud-builders/docker'
args: ['push', 'us-central1-docker.pkg.dev/$PROJECT_ID/hello-repo/cicd-teste:1.0']
# Deploy to Cloud Run
- name: 'gcr.io/cloud-builders/gcloud'
args:
- 'run'
- 'deploy'
- 'minha-aplicacao'
- '--image=us-central1-docker.pkg.dev/$PROJECT_ID/hello-repo/cicd-teste:1.0'
- '--platform=managed'
- '--region=us-central1'
- '--allow-unauthenticated'
options:
logging: CLOUD_LOGGING_ONLY
Certifique-se de substituir cicd-teste pelo nome da imagem Docker que você definiu e substitua minha-aplicacao pelo nome desejado para o serviço Cloud Run. Mude $PROJECT_ID pelo ID do seu projeto no GCP.
Salve o arquivo cloudbuild.yaml.
Passo 4: Configurar a integração com o GitHub
No Google Cloud Console, vá para o serviço Cloud Build na parte de Gatilhos.
Clique em “Configurar conexão” e siga as instruções para conectar sua conta do GitHub.
Selecione o repositório do GitHub que contém sua aplicação Node.js.
Passo 5: Ativar a pipeline de implantação automática
No Google Cloud Console, vá para o serviço Cloud Build e Gatilhos.
Clique em “Configurar disparador” para criar um novo disparador.
Defina as condições de acionamento do disparador, por exemplo, quando há alterações na branch principal do repositório do GitHub.
Escolha a opção “Detecção automática” para usar o arquivo de configuração que você criou anteriormente.
Clique em “Criar” para criar o disparador.
Agora, quando você fizer push para a branch principal do seu repositório do GitHub, a pipeline do Google Cloud Build será acionada.
Ela construirá a imagem Docker, fará o push para o Google Container Registry e implantará a aplicação no Cloud Run.
Passo 6: Ativar acesso sem autenticação
Apesar de subir a aplicação a cada push, substituindo o cloudbuild.yaml com a informação do seu projeto e disponibilizando uma URL para acesso, provavelmente você vai se deparar com um erro de 403 – forbidden. Para isto, basta rodar:
gcloud run services add-iam-policy-binding minha-aplicacao \
--member="allUsers" \
--role="roles/run.invoker"
Lembrando que minha-aplicacao é o nome da sua aplicação do Cloud Run. Vai pedir em qual região liberar esse acesso. Como estamos trabalhando com us-central1, vamos digitar 29 e dar Enter.
Ao acessar a URL da aplicação no Cloud Run agora, provavelmente já está disponível e você lerá a mensagem do seu Node.js.
1 Comment
Criando uma esteira de entrega com Terraform, Kubernetes, Cloud Build, Docker e Github – Punk do DevOps
Julho 25, 2023 at 3:00 pm[…] orientar de renomear o cloudbuild_kubernetes.yaml para cloudbuild.yaml para reaproveitar o Cloud Build deste tutorial, pois ele busca um cloudbuild.yaml para configurar a […]