Construir software é relativamente fácil, se pensarmos friamente no processo. A complexidade na construção da solução está diretamente relacionado a qualidade esperada. Garantir a qualidade das soluções desenvolvidas, seja em sua proposta, ou adoção da utilização de ferramentas custará tempo, e consequentemente, dinheiro. Trabalhando em grandes fábricas de software ou em pequenas empresas, a garantia da qualidade dos softwares desenvolvidos, ao menos em algum momento, deve ser a preocupação de todos os envolvidos.

Há diversas soluções proprietárias para garantia da qualidade dos produtos desenvolvidos, e geralmente o valor não é baixo. O desconhecimento, e até mesmo a falta de divulgação das opções opensource norteia a incerteza e insegurança em sua implantação.

Assim, este projeto foca-se em criar uma esteira de integração contínua, focando em filofias como DevOps, DevSecOps, GitOps e ChatOps. Como primeiro objetivo, nortearemos a construção automatizada dos elementos que comporão esta esteira, utilizando Ansible para implantação das ferramentas em um cluster Docker Swarm.

As soluções aqui propostas podem ser feitas tanto in loco, quanto em núvem. Para as soluções em núvem, utilizaremos o terraform.

Arquitetura DevOps

O estado do projeto e os objetivos

Atualmente, temos trabalhado para automatizar a implantação destes elementos, como dito anteriormente, porém, há muito o que se fazer.

Ansible Roles

Docker Images

  • alpine-liquibase-helper - Container que funciona como um wrapper para as funcionalidades do Liquibase. Deixamos a atenção para a captura do estado atual do banco de dados e transformação para ChangeSets. Há uma documentação extensa para todas as opções que o container oferece;
  • alpine-gitflow-helper - Container que executa todas as funcionalidades da implementação do Gitflow chamada AVH. Além das funcionalidades padrão da implementação, adicionamos a possibilidade do gerenciamento de versões em projetos PHP(composer), Maven(pom) e Node.js(npm) e a geração de release notes a partir dos commits entre as releases. Há uma documentação extensa para todas as opções que o container oferece;
  • alpine-asciidoctor-helper - Container que transforma asciidoc para HTML e PDF. Todas as documentações dos containers, ansibles roles e terraform script utilizam esta tecnologia. Há uma documentação extensa para todas as opções que o container oferece;
  • alpine-sonarqube-scanner - Container para execução do SonarQube Scanner em um projeto;
  • alpine-tesseract-ocr-helper - Container que recebe uma imagem e retorna seu texto(executa OCR).

Terraform Scripts