Azure DevOps e SonarCloud - em nosso pipeline
Tags: tutorial, beginners, azuredevops, sonarqube
Published: 2021-11-26 14:11:29

![Banner](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/qkbbyjohrttdrhkbw7vx.png)
 
O SonarCloud é uma plataforma em nuvem para exibir o processo de inspeção continua do código de sua aplicação. Para isso, o SonarCloud utiliza o SonarQube para realizar a “varredura” em seu código fonte e analisar possíveis vulnerabilidade, erros e regras específicas da linguagem (*Code Smells*).

Como no exemplo iremos utilizar uma aplicação construída com **Node.js**, então podemos analisar os seguintes guias de referências:

### Pipeline de Build

Com um projeto previamente *commitado* no Azure DevOps, iremos configurar nosso pipeline de build para criar um artefato para um futuro *deploy* e aproveitar para fazermos nossa inspeção contínua.

![Azure Devops](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/7qdjjf7oku3clxzovzbr.png)

### Criação do pipeline

Em nosso Azure DevOps iremos acessar o menu de *pipelines* > *builds*.

![Criando pipeline](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/o56a722e30p6z8w9td77.png)

E então criar um novo pipeline de build.

![Novo build](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/pwwldjv8ndbw05vsjdkv.png)

Para este exemplo, vamos configurar utilizando o recurso de edição clássica, para isso basta clicar nesta opção:

![Edição Classica](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/fe2amdhrps9h4alh6c0l.png)

Vamos então selecionar o repositório que nosso código fonte se encontra.

![Repositório](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/yvx7i2cphzs0g196fkrx.png)
 

Para esta aplicação em **Node.js**, iremos utilizar o template para build e test de aplicação em **Node.js** respectivamente 

![Functions](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/h36zmjoit3aw5ir0bd3p.png)

Bom, agora já possuímos nossos passos de *build, test, publish* e geração do artefato. Agora iremos configurar a nossa análise de código com o SonarQube e SonarCloud.

### Criação de Conta e Projeto no SonarCloud

É possível acessar o SonarCloud através de três opções:
- Azure DevOps
- Bitbucket
- GitHub

Eu vinculei minha conta do GitHub para acesso ao SonarCloud.
Após o login, vamos criar uma nova organização para o nosso exemplo:

![Login](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/knf6hip2pbnly89xqtgi.png)

![Organização](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/xm4178ars9znl84xixoz.png)

Vamos criar de forma manual o *endpoint* de nossa organização.

![Organização](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/kq1dlix9r9v5una4aoyg.jpeg)
 
Após criação da nova organização, iremos criar um novo projeto para análise do código.

![Analisando](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/aukvi1y70t4ntttr0k40.png)

E então configurarmos uma chave de projeto.

![Setup Manually](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/5ry0dywv1ub6aw2ucg0c.jpeg)

Na próxima etapa, será gerado um token a partir da descrição informada. Criado então o projeto de análise de código, vamos configurar em nosso pipeline de build.

### Adicionando a extensão do SonarCloud

Para adicionar a extensão do SonarCloud, temos que clicar em novo *agent job* e pesquisar por “sonar cloud”. Após encontrar o SonarCloud no Marketplace, devemos então adiciona-lo em nosso Azure Devops.

![Adicionando a extensão](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/uwd9n72td45ovtizdnsq.png)

Após adicionado como extensão na nossa organização do AzureDevOps, será liberado três novos templates para o nosso pipeline, sendo eles “*Prepare Analysis Configuration*”, “*Run Code Analysis*” e “*Publish Quality Gate Result*”.

![Template Pipeline](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/hy3e3s4w7vymgsh133d0.png)

Para que funcione corretamente a análise do código. Devemos adicionar na sequência correta esses três passos no pipeline.

1. Sendo primeiro a preparação da análise “Prepare analysis on SonarCloud”.
2. Logo em seguida devemos adicionar o build do projeto. No caso um projeto em .net core, então iremos utilizar o comando de *dotnet build.*
3. Depois adicionaremos o passo de execução da análise “*Run Code Analysis*”.
4. E por fim, publicaremos os resultados “*Publish Quality Gate Result*”.

Essa sequência se faz necessário pois ao iniciar a preparação da análise, o SonarCloud passa a “escutar” o diretório, então logo mais será compilado o código para esta verificação e então será executado e publicado a análise.

### Configurações do “Prepare Analysis Configuration”

Vamos verificar que a etapa de configurações de preparo da análise requer algumas atenções de configurações.

![Prepare Analysis Configuration](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/y09r1fw269v7obn8hp74.png)

Primeiro, vamos criar nossa conexão com o SonarCloud clicando no botão “*New*”.

Será necessário informar o nome da conexão, sendo a chave do produto informada no SonarCloud e o token gerado para o projeto criado.

![Service connection](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/wu12i88s5qglbhd3fr70.jpeg)
 
Após este passo, basta selecionar o nome da organização.

![Organização](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/wrqsag5f3q659wwa6zmu.jpeg)

Outra configuração importante é a Utilização do ***Standalone Scanner*** e ***Manually provide configuration.*** Também poderíamos deixar integrado com o MSBuild.

Selecionando a configuração manual, será necessário informar novamente a chave do projeto que será testado no SonarCloud.

![configuração manual](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/hjern0dhxx7bbioturqf.jpeg)

Pronto! Agora é só salvar e mandar executar o nosso build. Clique no botão “Save and Queue”.

![Save and Queue](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/4kc755rvhgimdntexjy7.png)

### Build com Sucesso

Ao acessar os detalhes do build que foi gerado, podemos observar que as etapas foram concluídas com sucesso e inclusive que o resultado foi publicado no SonarCloud.

![Build](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/fwtjyb0jamdcibxtvxyn.jpeg)

### Verificando o relatório no SonarCloud

Ao acessar o projeto no SonarCloud e **selecionar *branch* do nosso código,** verificamos que o nosso código passou pela análise do SonarQube.
 
![Relatório no SonarCloud](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/ibfaumvnqisrsvw8wz83.jpeg)

O Bacana é que a cada novo build, as novas funcionalidades adicionadas em nosso código serão novamente analisadas e novo relatório será gerado.

Com isso a gente consegue garantir uma qualidade do código que será entregue para o cliente. Sempre se preocupando com as questões de seguranças, vulnerabilidades e padrões da linguagem.

Fontes onde pesquisei esse conteúdo:

- https://azure.microsoft.com/pt-br/services/devops/
- https://azure.microsoft.com/pt-br/solutions/devops/
- https://azure.microsoft.com/pt-br/features/devops-projects/
- https://docs.sonarqube.org/latest/analysis/scan/sonarscanner/
- https://docs.sonarqube.org/latest/analysis/ci-integration-overview/
- https://docs.sonarqube.org/latest/analysis/analysis-parameters/