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.
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
- ansible-playbooks - Playbooks utilizados na construção da arquitetura que estamos propondo. Há uma documentação inicial para montagem do ambiente necessário;
- ansible-role-docker-swarm - Role para instalação e criação de um swarm preparado para receber os elementos que comporão nossa esteira;
- ansible-role-traefik - Role para implantação do proxy reverso em um cluster Docker Swarm;
- ansible-role-portainer - Role para implantação do Portainer em um cluster Docker Swarm;
- ansible-role-selenium-hub - Role para implantação do Selenium HUB com nós Firefox e Google Chrome;
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
- terraform-aws-devops-vpc - Script Ansible para implantação de uma nova rede(VPC) para implantação dos elementos necessários;
- terraform-aws-devops-nexus - Script Ansible para implantação do Sonatype Nexus utilizando ECS;
- terraform-aws-devops-selenium - Script Ansible para implantação do do Selenium HUB.