Skip to content

Terry Laundos Aguiar (terryvel)

Compartilhando experiências para inspirar e apoiar outras jornadas

Menu
Menu

Montando um ambiente para avaliação de qualidade de código no Azure com SonarQube

Posted on 13 de agosto de 202012 de setembro de 2025 by terryvel

A transformação digital de grandes empresas “não-digitais” tem o enorme desafio de encontrar meios para tornar os processos mais ágeis e melhorar as decisões de negócios com base nos dados.

Esse desafio naturalmente é suportado por departamentos de TI, desenvolvedores, cientistas de dados, engenheiros de dados, entre outros, que criam softwares e ferramentas para auxiliar as áreas de negócios. Os desenvolvimentos podem ser conduzidos tanto internamente como com parceiros, e aqui reside o desafio de criar soluções que entre outras características devem ser escaláveis.

Acompanhar a qualidade do código que está sendo desenvolvido é fator determinante não só para a longevidade da solução, mas também para garantir a capacidade de entrega de novas funcionalidades por parte da equipe.

Neste artigo vou mostrar como montar um ambiente de avaliação e acompanhamento de qualidade de código com o SonarQube na Azure.

O SonarQube é uma plataforma de código aberto desenvolvida pela SonarSource para inspeção contínua da qualidade do código, executar revisões automáticas com análise estática do código, detectar bugs, “code smells” e vulnerabilidades de segurança.

A instalação será realizada utilizando uma imagem modificada do SonarQube.

A imagem oficial está disponível no Dockerhub e este artigo utiliza uma versão modificada para rodar no Azure Container Instance.

Por padrão, o SonarQube vem com uma base de dados H2 embarcada, o que não é recomendado para ambientes produtivos, então, neste artigo, utilizaremos o Azure SQL.

Vamos ao passo-a-passo:

Criando o banco de dados

Na sua conta do Azure, escolha a opção Create a resource no menu lateral.

Não foi fornecido texto alternativo para esta imagem

Faça uma pesquisa por Azure SQL.

Não foi fornecido texto alternativo para esta imagem

Selecione o recurso e clique no botão Create.

Não foi fornecido texto alternativo para esta imagem

Escolha a opção Single Database e avance clicando no botão Create.

Não foi fornecido texto alternativo para esta imagem

Escolha a Subscription, Resource Group, e um nome para a base de dados em Database name. Na opção Server, caso não tenha um servidor configurado, utilize a opção Create new para criar um novo servidor.

Não foi fornecido texto alternativo para esta imagem

Caso tenha escolhido a opção de criar um novo servidor, preencha as informações Server name, Server admin login, Password, Location e em seguida no botão OK.

Não foi fornecido texto alternativo para esta imagem

Clique na opção Configure database para ajustar a o dimensionamento da base de dados à sua realidade (neste exemplo utilizaremos uma configuração básica) e, após preencher os campos, clique no botão Next: Networking para realizarmos as configurações de rede

Não foi fornecido texto alternativo para esta imagem

Em Connectivity method, escolha a opção Public endpoint e certifique-se de ter a opção Allow Azure services and resources to access this server em Yes.

Após as configurações desta etapa, avance clicando no botão Next: Additional settings.

Não foi fornecido texto alternativo para esta imagem

No campo Collation, utilize a opção “SQL_Latin1_General_CP1_CS_AS”. Esta definição é um requisito para a instalação do SonarQube.

Não foi fornecido texto alternativo para esta imagem

Revise as configurações, clique na opção Create e aguarde o provisionamento do recurso.

Não foi fornecido texto alternativo para esta imagem

Pronto, estamos com o banco de dados preparado.

Configurando o Azure Container Instance

Agora vamos provisionar o ambiente para hospedar a aplicação do SonarQube.

Mais uma vez, escolha a opção Create a resource no menu lateral.

Não foi fornecido texto alternativo para esta imagem

Faça uma pesquisa por Container Instances.

Não foi fornecido texto alternativo para esta imagem

Selecione o recurso e clique no botão Create.

Não foi fornecido texto alternativo para esta imagem

Escolha a Subscription e o Resource Group.

Preencha o Container name com um nome de sua escolha.

Em Region, é importante utilizar a mesma utilizada para o banco de dados (por questões de performance).

Em Image source, utilizarmos a opção Docker Hub or other registry e em Image type selecione a opção Public.

No campo Image, preencha com a opção terryvel/sonarqube-aci:tagname.

Clique em Change size e altere as configurações para Number of CPU cores para 2 e Memory para 3.

Não foi fornecido texto alternativo para esta imagem

 Como já foi mencionado, esta imagem que estamos utilizando é uma adaptação da imagem oficial do SonarQube, com duas diferenças:

  • Removendo a opção: -Des.enforce.bootstrap.checks=true
  • Forçando a opção discovery type do Elasticsearch para single-node.

Não vou entrar em detalhes quanto às alterações de parâmetros, mas se você tentar utilizar a imagem oficial irá se deparar com a seguinte mensagem de erro, que se refere às premissas para as configurações exigidas pela imagem oficial e que o Azure Container Instance não permite que sejam ajustadas.

ERROR: [1] bootstrap checks failed

[1]: max virtual memory areas vm.max_map_count [65530] is too low, increase to at least [262144]
Não foi fornecido texto alternativo para esta imagem

Após preencher os campos, clique no botão Next: Networking.

Em Networking type, escolha a opção Public.

Escreva um DNS name label para acessar a aplicação com facilidade pelo navegador.

Em Ports habilite a porta 9000, que é a porta padrão do SonarQube e clique no botão Next: Advanced.

Não foi fornecido texto alternativo para esta imagem

Adicione as seguintes variáveis de ambiente para configurar a conexão com o banco de dados.

SONARQUBE_JDBC_USERNAME = <Server admin login>

SONARQUBE_JDBC_PASSWORD = <Password>


SONARQUBE_JDBC_URL = jdbc:sqlserver://< Server name>.database.windows.net:1433;database=<Database name>;user=<Server admin login>@<Server name>;password=<Password>;encrypt=true;trustServerCertificate=false;hostNameInCertificate=*.database.windows.net;loginTimeout=30
Não foi fornecido texto alternativo para esta imagem

Revise as configurações, clique na opção Create e aguarde o provisionamento do recurso.

Não foi fornecido texto alternativo para esta imagem

Validando a instalação e acessando o SonarQube

Se tudo correu bem, o Azure Container Instance deve estar semelhante à imagem a seguir.

Não foi fornecido texto alternativo para esta imagem

Você poderá acessá-lo através do DNS name label utilizado na criação.

Não foi fornecido texto alternativo para esta imagem

Tudo pronto para aproveitar o SonarQube e avaliar a qualidade dos códigos que você e sua empresa estão criando.

Por enquanto é isso, em breve irei testar alguns plug-ins para habilitar a autenticação do SonarQube com o Azure Active Directory e teremos um novo artigo com os resultados.

Esse artigo foi originalmente publicado no Linkedin e pode ser acessado aqui:
https://www.linkedin.com/feed/update/urn:li:ugcPost:6699649981617344512/

Category: DevOps e Qualidade de Código

Navegação de Post

← Energia, MSP430 LaunchPad e Bluetooth com Python
Por que Arquitetura Empresarial é tão essencial e como romper a inércia com o Essential Open Source →

Deixe um comentário Cancelar resposta

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *

Este site utiliza o Akismet para reduzir spam. Saiba como seus dados em comentários são processados.

Terry Laundos Aguiar
Gerente de Arquitetura de TI, apaixonado por dados, integrações e arquitetura empresarial, conectando estratégia de negócios e tecnologia.
  • LinkedIn
  • Instagram
  • X

Análise Estática de Código Azure Bluetooth DevOps Energia Enterprise Architecture Tools Essential Open Source Essential Project interrupções LED linux Microcontroladores msp430 mspgcc Python Qualidade de Código rede SonarQube Texas Instruments Windows

© 2025 Terry Laundos Aguiar (terryvel) | Powered by Minimalist Blog WordPress Theme