-
Notifications
You must be signed in to change notification settings - Fork 46
Configurar o SonarCloud para um projeto usando Jest
Data | Versão | Descrição | Revisor |
---|---|---|---|
17/11/2021 | 1.0 | Versão Inicial | Henrique Martins de Messias |
19/11/2021 | 1.1 | Adição do parser | Henrique Martins de Messias |
20/10/2022 | 1.2 | Atualização dos procedimentos | Bruno Carmo Nunes |
- Github Actions
- Node
- SonarCloud
- Jest
Na raiz do projeto, crie um arquivo chamado sonar-project.properties
com o seguinte conteúdo:
sonar.organization=fga-eps-mds-1
sonar.projectKey=fga-eps-mds_<nome_do_repositorio>
sonar.projectName=<nome_do_repositorio>
sonar.sources= src/
sonar.tests= __tests__/
sonar.language=js
sonar.javascript.lcov.reportPaths=coverage/lcov.info
sonar.coverage.exclusions=__tests__/,
sonar.testExecutionReportPaths=coverage/jest-report.xml
Os valores de sonar.organization e sonar.projectKey podem ser encontrados ao acessar o SonarCloud e acessar a área de informação do projeto.
Os valores de sonar.sources e sonar.tests podem variar dependendo do seu projeto.
Não esqueça de dar o commit e enviar o novo arquivo para sua organização no github, caso não mande pode ocorrer problemas na configuração do SonarCloud.
Independentemente da linguagem usada no projeto, é necessário adicionar uma secret chamada SONAR_TOKEN.
Para adicionar a secret no repositório:
- Entre no SonarCloud com sua conta github que tenha vinculado o repositório da disciplina;
- Adicione a análise de um novo projeto no canto superior à direita;
- Selecione a organização EPS/MDS, e escolha o repositório do seu projeto.
- Quando selecionado, escolhe o método de análise sendo o Github Actions.
- Copie o token mostrado no campo 2 (o que vem após Value field);
- Vá para a página do seu projeto no GitHub e clique em Settings e depois clique em Secrets;
- Clique em New repository secret;
- Na parte Name coloque: SONAR_TOKEN;
- Na parte Value cole o código copiado no passo 5;
- Clique em Add secret.
Inclua no seu package.json
as dependências de desenvolvimento:
npm install -D jest
npm install -D jest-config
npm install -D jest-sonar
Na raiz do repositório, crie um arquivo chamado jest.config.js
com o seguinte conteúdo:
module.exports = {
moduleDirectories: ['node_modules', '<rootDir>/'],
moduleFileExtensions: [
'js',
'mjs',
'cjs',
'jsx',
'ts',
'tsx',
'json',
'node',
],
collectCoverage: true,
collectCoverageFrom: ['./src/**'],
coveragePathIgnorePatterns: [
'/src/server.js',
],
testFailureExitCode: 0,
reporters: [
'default',
[
'jest-sonar',
{
outputDirectory: 'coverage/',
outputName: 'jest-report.xml',
reportedFilePath: 'relative',
relativeRootDir: '<rootDir>/../',
},
],
],
testMatch: [
'**/*.test.js',
],
};
module.exports = createJestConfig(customJestConfig)
Esse arquivo serve para escolher o que irá testar e também para gerar as métricas destinadas ao SonarCloud, que irá criar uma pasta coverage e enviar quando a Actions for ativada pelo GitHub.
Crie um arquivo chamado .github/workflows/<nome_do_arquivo>.yml
com o seguinte conteúdo:
on:
push:
branches:
- main
name: SonarCloud
jobs:
sonarcloud:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
with:
fetch-depth: 0
- name: Get main
run: git fetch origin main
- name: Instalar dependencias
run: npm install
- name: Instalar Jest
run: npm install -g jest
- name: Executar testes
run: jest --coverage --runInBand --detectOpenHandles --forceExit
- name: SonarCloud Scan
uses: sonarsource/sonarcloud-github-action@master
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
SONAR_TOKEN: ${{ secrets.SONAR_TOKEN }}
Obs: o secrets.GITHUB_TOKEN é disponibilizado automaticamente pelo GitHub.
Os passos importantes desse pipeline são Executar testes e SonarCloud Scan. O seu projeto pode configurar o pipeline de maneiras diferentes, mas certifique-se que esses dois passos estejam presentes.
Crie um arquivo chamado .github/workflows/<nome_do_arquivo>.yml
com o seguinte conteúdo:
name: ReleaseMetrics
on:
push:
tags:
- "v*"
jobs:
generate-release:
runs-on: ubuntu-latest
steps:
- name: Get file name
id: name
run: echo "::set-output name=file_name::fga-eps-mds-<nome_do_repositorio>-$(TZ='America/Sao_Paulo' date +'%m-%d-%Y-%H-%M-%S')-${{github.ref_name}}"
- name: Copy repository
uses: actions/checkout@v2
- run: wget $METRICS_URL -O ${{ steps.name.outputs.file_name }}.json
env:
METRICS_URL: ${{ secrets.METRICS_URL }}
- uses: actions/upload-artifact@v2
with:
name: ${{ steps.name.outputs.file_name }}.json
path: ${{ steps.name.outputs.file_name }}.json
- name: Send metrics to docs repo
uses: dmnemec/[email protected]
env:
API_TOKEN_GITHUB: ${{ secrets.API_TOKEN_GITHUB }}
with:
source_file: ${{ steps.name.outputs.file_name }}.json
destination_repo: 'fga-eps-mds/<nome_do_repositorio-de-documentacao>'
destination_folder: 'analytics-raw-data'
user_email: ${{ secrets.GIT_EMAIL}}
user_name: ${{ secrets.GIT_USER }}
commit_message: New metrics from ${{ github.event.repository.name }}
No passo name
, modifique a string com o nome do repositório.
Crie uma secret chamada METRICS_URL, para ser passado as informações das métricas geradas pela API do SonarCloud. Como um link exemplo (12 métricas):
Sendo que em PROJECT_KEY (valor da variável component), é a chave do repositório no SonarCloud. A mesma utilizada no passo 1 na parte de sonar-project.properties
.
O API_TOKEN_GITHUB, é obtido na configuração do usuário, e em configurações de desenvolvedor. Necessitando selecionar todas as configurações do repositório (repo).
Ao gerar o token, copie ele e crie um secret com o nome API_TOKEN_GITHUB.
Na variável destination_repo, coloque o nome do repositório da documentação do seu projeto (O mesmo link que o github utiliza na url).
Crie também dois secrets GIT_EMAIL e GIT_USER, representando as são informações do e-mail e usuário do github usados na seção.
Com isso, o arquivo de extração de métricas está pronto, ele somente irá ser ativado caso o usuário mande uma tag de versão do repositório para o github.
Segue abaixo a quantidade de secrets criadas nessa documentação.
Caso você receba o seguinte erro:
You are running CI analysis while Automatic Analysis is enabled. Please consider disabling one or the other
É necessário desabilitar o scan automático do repositório no SonarCloud. Para isso:
- Vá para a página do seu projeto no SonarCloud;
- Na aba Administration, clique em Analysis Method;
- Na seção SonarCloud Automatic Analysis, clique no botão para desabilitar.
EPS/MDS - FGA/UnB
Métodos de Desenvolvimento de Software
Gestão de Portfólio e Projetos de Software
RUP (Rational Unified Process)
Fase Elaboração (RUP) Planejamento(PMBOK)
Fase de Construção (RUP), Execução/Monitoramente e Controle (PMBOK)
Fase Transição (RUP), Finalização (PMBOK)
Acceptance Test Driven Development (ATDD)
Integração Contínua Deploy Contínuo
Automação de Ambiente com Docker
Orquestração de Containers com Docker Compose
Automação de Ambiente com Vagrant
Deploy Contínuo na Plataforma Heroku
Integração Contínua com Travis CI
Disponibilizando a Aplicação com o Proxy Reverso Nginx
Tutorial de Instalação do Ionic
Android Integração contínua com Circle CI
Configuração de Ambiente para React Native
Tutorial Instalação Ruby on Rails
Teste Automatizado Cucumber JS
Teste Automatizado Cucumber Rails
Testando AngularJS com Jasmine
Teste Automatizado com Selenium IDE
Configurar o SonarCloud para um projeto usando Jest
Configurar o SonarCloud para um projeto usando Pytest
Configurar o SonarCloud para um projeto usando Mocha e Istambul