a importância da integração contínua usando jenkins e sonarqube
Desenvolvimento

A importância da Integração Contínua, utilizando Jenkins e SonarQube

a importância da integração contínua usando jenkins e sonarqube
Larissa Bonifácio Roder
25 de março de 2019
a importância da integração contínua usando 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.

como configurar SonarQube

Configurando o Jenkins:

Como configurar Jenkins

Configuração do job mostrado na imagem anterior:

  1. Navegar até o campo Pipeline.
  2. Em “Definition”, selecionar “Pipeline script from SCM” (essa opção utiliza o Jenkinsfile contido no repositório).
  3. Em SCM, selecionar “Git“.
    1. Em “Repositories”, vamos informar a URL do repositório em “Repository URL” e informar as credenciais em “Credentials“.
    2. Em “Branches to build”, vamos informar a branch desejada em “Branch Specifier“.
  4. 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:

Como criar Jenkinsfile

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

Stages criados pelo Jenkins

Configurando o SonarQube

Para configurar as regras no sonar basta acessar o menu administration -> System -> Update Center, como é mostrado na imagem abaixo.

Como configurar regras SonarQube

E efetuar o download das regras que desejar de acordo com a linguagem utilizada.

Como SonarQube linguagens

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/

https://jenkins.io/

https://www.sonarqube.org/

 


Escrito por

Larissa Bonifácio Roder

Inscreva-se e receba nossa newsletter!

Estamos sempre gerando conteúdos inéditos para compartilhar conhecimento com você, além das últimas notícias de tecnologia.