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.
Faça uma pesquisa por Azure SQL.
Selecione o recurso e clique no botão Create.
Escolha a opção Single Database e avance clicando no botão Create.
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.
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.
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
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.
No campo Collation, utilize a opção “SQL_Latin1_General_CP1_CS_AS”. Esta definição é um requisito para a instalação do SonarQube.
Revise as configurações, clique na opção Create e aguarde o provisionamento do recurso.
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.
Faça uma pesquisa por Container Instances.
Selecione o recurso e clique no botão Create.
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.
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]
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.
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
Revise as configurações, clique na opção Create e aguarde o provisionamento do recurso.
Validando a instalação e acessando o SonarQube
Se tudo correu bem, o Azure Container Instance deve estar semelhante à imagem a seguir.
Você poderá acessá-lo através do DNS name label utilizado na criação.
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/