Desafio Criando um Pipeline de CI/CD

Neste projeto, será implementado um Pipeline de CI/CD fazendo uso do Cloud Build e Terraform. Todo o procedimento será descrito abaixo, com os prints de cada etapa.

ℹ️ INFO
Antes da realização dos procedimentos abaixo, deve-se ativar a API do Compute Engine e do Cloud Build. Além disso deve ser concedido a permissão de editor para a conta de serviço do Cloud Builder.

  1. Foi realizado o clone do diretório do repositório do desafio da DIO, terraform-exemplo2, para o repositório atual, para que seja configurado a trigger do Cloud Build.

  2. Agora o Cloud Build deverá ser aberto, para que seja conectado o repositório atual no Cloud Build

    Repositório Conectado

  3. Após a configuração do repositório deverá ser criado o gatilho para invocar um build sempre que um código for enviado por push a uma ramificação no repositório atual, sendo executado automaticamente o cloudbuild.yaml, que fará um terraform apply.

    Configuração do Gatilho

  4. Também será criado um bucket chamado de calimanfilho-terraform na zona us-east1, mesmo local que será criado a VM, para que os arquivos de estado do Terraform seja salvo no Google Cloud Storage.

    Bucket Criado

  5. Para o estado ser salvo, é necessário incluir o código abaixo no main.tf, informando o nome do bucket criado anteriormente, no argumento bucket.

    backend "gcs" {
        bucket  = "calimanfilho-terraform"
        prefix  = "terraform/state"
    }
  6. Para testar, será modificado no main.tf, o argumento name do recurso google_compute_instance.vm_instance será alterando de terraform-instance para cloudbuild-terraform.

    Instância Terraform Instance

    Instância Cloudbuild Terraform

  7. Após alguns erros de configuração que foram corrigidos, o gatilho do Cloud Build funcionou corretamente.

    Histórico de Gatilho