Qualidade em CI/CD com Sonar e k6

A qualidade de software não se resume a uma aplicação funcional; ela também exige código bem estruturado e desempenho consistente, mesmo sob carga. Uma das responsabilidades de um pipeline de CI/CD é garantir esses padrões para evitar problemas futuros e manter a confiança dos usuários. Ferramentas como Sonar e k6 ajudam a monitorar e melhorar continuamente esses aspectos, fornecendo insights sobre a saúde do código e a resiliência da aplicação. Neste artigo, exploramos como essas ferramentas funcionam e por que são essenciais para alcançar excelência em desenvolvimento.

Por que a qualidade no CI/CD é fundamental?

Com o ritmo acelerado do desenvolvimento moderno, é fácil sacrificar a qualidade para entregar rapidamente. Problemas como código duplicado, baixa cobertura de testes e gargalos de desempenho podem se acumular, resultando em software difícil de manter e aplicações que não atendem às expectativas dos usuários. Um pipeline bem configurado, que incorpore análise estática de código e testes de carga, pode identificar problemas rapidamente, permitindo correções antes que eles impactem a produção.

Conhecendo as ferramentas

Sonar: Monitorando qualidade de código

O Sonar, ou sua versão SaaS chamada SonarCloud, é uma solução de análise estática de código que ajuda a monitorar a qualidade do software em vários aspectos. Ele analisa o código em busca de padrões ruins, duplicações e complexidade, além de medir a cobertura de testes.

  • Análise de código: o Sonar identifica problemas como duplicações, falhas de manutenção e complexidade ciclomática alta, ajudando a manter o código claro e sustentável.
  • Cobertura de testes: ele mede o percentual de cobertura de testes unitários, destacando áreas não testadas que podem representar riscos.
  • Feedback contínuo: integrado ao CI/CD, o Sonar fornece relatórios em tempo real sobre o impacto das mudanças no código, ajudando a evitar a degradação da qualidade.

Para mais informações, acesse a documentação oficial do Sonar.

k6: Avaliando desempenho e resiliência

O k6 é uma ferramenta projetada para executar testes de carga e desempenho. Com ele, você pode simular cenários de uso real para medir a capacidade de resposta, identificar gargalos e validar a estabilidade da aplicação sob estresse.

  • Testes de carga: o k6 permite criar cenários que simulam desde acessos normais até picos de tráfego, ajudando a prever o comportamento da aplicação sob diferentes condições.
  • Métricas detalhadas: ele coleta dados como tempo de resposta, taxa de erros e throughput, facilitando a identificação de problemas de desempenho.
  • Simplicidade e flexibilidade: usando JavaScript para escrever os scripts de teste, o k6 oferece uma curva de aprendizado rápida e alta personalização.

Saiba mais na documentação oficial do k6.

Integrando Sonar e k6 ao seu CI/CD

Agora que você conhece as funcionalidades dessas ferramentas, é hora de integrá-las ao pipeline de CI/CD (usaremos GitHub Actions neste exemplo), garantindo que a análise de qualidade e os testes de desempenho sejam automáticos e contínuos.

Configurando o Sonar no GitHub Actions

Para configurar o Sonar, inicie criando uma conta no SonarCloud e gerando um token de autenticação. Adicione o token ao GitHub como um segredo em Settings > Secrets and variables > Actions. Em seguida, adicione o seguinte workflow ao repositório:

				
					name: Sonar Quality Check
on: [push, pull_request]
jobs:
  sonar:
    runs-on: ubuntu-latest
    steps:
      - name: Check out code
        uses: actions/checkout@v2
      - name: Set up Java
        uses: actions/setup-java@v2
        with:
          java-version: '11'
      - name: Cache Sonar dependencies
        uses: actions/cache@v2
        with:
          path: ~/.sonar/cache
          key: ${{ runner.os }}-sonar
      - name: Run Sonar Scanner
        env:
          SONAR_TOKEN: ${{ secrets.SONAR_TOKEN }}
        run: |
          sonar-scanner \
          -Dsonar.projectKey=my-project \
          -Dsonar.organization=my-org \
          -Dsonar.host.url=https://sonarcloud.io
				
			

Este workflow analisa o código automaticamente em cada push e pull request, gerando relatórios detalhados na interface do SonarCloud. Para personalizações avançadas, consulte a documentação do SonarCloud.

Configurando o k6 no GitHub Actions

Para o k6, o primeiro passo é criar um script de teste de carga. Salve o seguinte exemplo básico como tests/performance.js:

				
					import http from 'k6/http';
import { check, sleep } from 'k6';
export let options = {
  vus: 10, // Número de usuários virtuais
  duration: '30s', // Duração do teste
};
export default function () {
  let res = http.get('https://example.com');
  check(res, {
    'status is 200': (r) => r.status === 200,
  });
  sleep(1);
}

				
			

Depois, configure o seguinte workflow no GitHub Actions:

				
					name: k6 Performance Test
on: [push, pull_request]
jobs:
  k6:
    runs-on: ubuntu-latest
    steps:
      - name: Check out code
        uses: actions/checkout@v2
      - name: Install k6
        run: |
          sudo apt-get update
          sudo apt-get install -y k6
      - name: Run performance tests
        run: k6 run tests/performance.js
				
			

Esse workflow executa os testes de desempenho automaticamente, relatando resultados diretamente no log do GitHub Actions. Para integrações avançadas, como dashboards, veja a documentação oficial do k6.

Por que essas ferramentas são indispensáveis?

A integração de Sonar e k6 em pipelines de CI/CD oferece uma abordagem proativa para a manutenção da qualidade e do desempenho. Com o Sonar, você mantém a saúde do código ao longo do tempo, identificando problemas antes que eles se tornem complexos. Já o k6 permite validar a resiliência e estabilidade da aplicação, garantindo uma experiência de usuário consistente.

Ao usar essas ferramentas, sua equipe pode alcançar entregas rápidas sem comprometer a qualidade, gerenciando o crescimento da base de código e atendendo às demandas de usuários finais cada vez mais exigentes.

Acelere a sua carreira conosco!

A Mentoria DevOps é um programa de mentoria de 12 meses com encontros semanais ao vivo, com um grupo seleto e restrito, onde estaremos do seu lado para mantê-lo relevante e atualizado no mercado de tecnologia, aprendendo e implementando as melhores práticas e ferramentas de DevOps. Clique aqui para entrar na prioridade pela melhor oferta de lançamento

Conclusão

Sonar e k6 são aliados poderosos para elevar os padrões de qualidade e desempenho no desenvolvimento de software. Integrados ao GitHub Actions, eles tornam o processo automatizado, eliminando barreiras e permitindo foco total na entrega de valor. Incorporar essas ferramentas ao pipeline de CI/CD é mais que uma prática recomendada; é um passo essencial para criar um software confiável, escalável e alinhado às expectativas do mercado.