A área de tecnologia se expande cada vez mais, tornando-se um mercado bastante aquecido para…
A importância da Integração Contínua, utilizando Jenkins e SonarQube
Produzir software de qualidade é uma tarefa difícil, que exige um constante monitoramento para mantê-lo íntegro.
A integração contínua é uma técnica de desenvolvimento que busca diagnosticar os bugs (defeitos) e problemas de integração mais rapidamente, utilizando um repositório de código único e executando o build (construção) do software diariamente.
Qual o principal ganho nos projetos com a Integração Contínua?
Imagine vários desenvolvedores codificando módulos de um mesmo projeto, é natural que colisões de código possam surgir. É bem provável que, em algum momento, um desses módulos seja alterado, simultaneamente, por dois ou mais desenvolvedores ocasionando problemas
A integração contínua atua exatamente antecipando tais situações, permitindo que o time reaja imediatamente e garanta uma evolução muito mais segura do produto. Afinal, “é melhor prevenir que remediar”’.
Jenkins
É uma ferramenta de integração contínua, automatizada, que traz diversos benefícios. A principal funcionalidade dela é construir o projeto por completo de forma automática, rodando os testes disponíveis, a fim de detectar antecipadamente os erros, reduzindo riscos.
SonarQube
O SonarQube é um projeto open source que visa justamente isso: Avaliar a qualidade de seu código. Para isso ele utiliza um conjunto de ferramentas que analisa a arquitetura e design, número de comentários, regras de linguagem, nível de complexidade, código duplicado, cobertura de testes no código, etc. Além de possuir um número bastante extenso de plugins. Com base nessas informações disponibiliza números que indicam a qualidade do código, e disponibiliza um dashboard e alertas para facilitar a visualização e identificação dos problemas.
Configurando o ambiente
Será demonstrado um passo a passo para a configuração de um ambiente integrando Jenkins e SonarQube. A instalação para a execução dos exemplos foi feita via container, no caso o Docker.
Arquivo Docker Compose
O arquivo a seguir mostra a configuração necessária para o funcionamento do Jenkins e o SonarQube. Como podemos perceber, o SonarQube utiliza as configurações do PostgreSQL e o Jenkins utiliza as configurações do SonarQube.
Configurando o Jenkins:
Configuração do job mostrado na imagem anterior:
- Navegar até o campo Pipeline.
- Em “Definition”, selecionar “Pipeline script from SCM” (essa opção utiliza o Jenkinsfile contido no repositório).
- Em SCM, selecionar “Git“.
- Em “Repositories”, vamos informar a URL do repositório em “Repository URL” e informar as credenciais em “Credentials“.
- Em “Branches to build”, vamos informar a branch desejada em “Branch Specifier“.
- Em Script Path, vamos informar o nome do nosso “JenkinsfileTest” que, neste caso, será Jenkinsfile
Criando o Jenkinsfile do projeto:
O arquivo Jenkinsfile é um node, onde configura-se vários stages, como podemos verificar na próxima imagem:
Um stage é cada etapa que será executada no Jenkins quando solicitamos a construção de um build.
- O “stage” chamado “Checkout SCM” indica que o Jenkinsfile foi criado com suporte para multibranch;
- O “stage Build”, indica que estamos gerando os artefatos necessários para deploy do sistema, no exemplo utilizamos um projeto Maven;
- O “stage Sonar”, é a etapa onde o código é escaneado pelo SonarQube, que este de acordo com as regras configuradas determina quais os pontos podem ser melhorados.
A imagem mostra os stages executados pelo Jenkins
Configurando o SonarQube
Para configurar as regras no sonar basta acessar o menu administration -> System -> Update Center, como é mostrado na imagem abaixo.
E efetuar o download das regras que desejar de acordo com a linguagem utilizada.
Independente da arquitetura do projeto e quantidade de ambientes, a geração de builds pode se tornar um desafio enorme. Por isso, a integração contínua com ferramentas automatizadas reduz erros do trabalho em equipe e aumenta a produtividade da equipe.
Referências
http://www.devmedia.com.br/integracao-continua-uma-introducao-ao-assunto/28002
http://blog.caelum.com.br/integracao-continua-de-projeto-java-com-jenkins/
[…] A importância da Integração Contínua, utilizando Jenkins e SonarQube […]