Atlantis com workflow personalizado

Workflows personalizados podem ser definidos para substituir os comandos padrões que o Atlantis executa.

Antes de começarmos é interessante que leia um pouco sobre a nossa ultima publicação e como nós o configuramos utilizando o Terraform e AWS.

Por padrão, o fluxo do Atlantis é com o básico do Terraform com o plan e apply. Como mencionado no nosso último post sobre Atlantis, abordamos a possibilidade de criar Workfows personalizados para que possamos ajustar o processo de integração da forma que melhor atende nossas necessidades.

Criaremos um arquivo chamado repos.yaml para que possamos desenvolver o nosso próprio Workflow, durante a stage de plan será feito a inclusão de uma ação de validate:

repos:
  - id: /.*/
    allow_custom_workflows: true
    allowed_overrides:
      - workflow
    workflow: default

workflows:
  default:
    plan:
      steps:
      - init
      - run: terraform validate -no-color
      - plan
    apply:
      steps:
      - apply

Para que possamos utilizar o Workflow em questão, vamos precisar carrega-lo no nosso ambiente com Atlantis, para isso será necessário que configuremos dentro no nosso módulo adicionando a diretiva custom_environment_variables com a variável de ambiente ATLANTIS_REPO_CONFIG_JSON que receberá o nosso repos.yaml como valor:

  custom_environment_variables = [
      {
          "name": "ATLANTIS_REPO_CONFIG_JSON",
          "value": jsonencode(yamldecode(file("${path.module}/repos.yaml"))) 
      }
  ]

Após aplicar a mudança dentro da nossa infraestrutura, basta que a gente realize o teste, vamos editar o projeto e ver se a nossa mudança é aplicada dentro do nosso merge:

Atlantis validate

Observe que no inicio do Output ele retorna o output do terraform validate informando que a configuração é valida, dessa forma é possível realizarmos várias personalizações e integrações.

Espero que tenham entendido a ideia do que seja um Workflow personalizado e qualquer dúvida pode mandar nos comentários!

Comentários