Skip to content

Commit

Permalink
Merge pull request #24 from fga-eps-mds/fix/tests
Browse files Browse the repository at this point in the history
fix
  • Loading branch information
clara-ribeiro authored Jan 19, 2025
2 parents d1883ec + 768dc0d commit 42ab880
Show file tree
Hide file tree
Showing 4 changed files with 93 additions and 232 deletions.
13 changes: 8 additions & 5 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -94,7 +94,8 @@ jobs:

test:
runs-on: ubuntu-latest
continue-on-error: true # Permite que o pipeline continue mesmo com falhas nos testes
# TO DO: adicionar variaveis de ambiente conforme necessario
# env:
steps:
- name: Checkout code
uses: actions/checkout@v3
Expand All @@ -118,13 +119,15 @@ jobs:
run: npm i

- name: 🧪 Roda suíte de testes
run: npm test || true # Ignora falhas dos testes
run: npm test

sonarcloud:
# TO DO: adicionar variaveis de ambiente conforme necessario
# env:
name: sonarcloud
needs: [test]
runs-on: ubuntu-latest
continue-on-error: true # Continua o pipeline mesmo com falhas nos testes
continue-on-error: true
steps:
- name: Checkout code
uses: actions/checkout@v3
Expand All @@ -148,10 +151,10 @@ jobs:
run: npx eslint -f json -o reports/eslint-report.json src || true

- name: 🧪 Testes e cobertura
run: VITEST_REPORTER=vitest-sonar-reporter CI=true npm test -- --coverage || true # Adicionando || true para garantir que o erro não interrompa o fluxo
run: VITEST_REPORTER=vitest-sonar-reporter CI=true npm test -- --coverage

- name: SonarCloud Scan
uses: SonarSource/sonarcloud-github-action@master
env:
GITHUB_TOKEN: ${{ secrets.PERSONAL_TOKEN }}
SONAR_TOKEN: ${{ secrets.SONAR_TOKEN }}
SONAR_TOKEN: ${{ secrets.SONAR_TOKEN }}
61 changes: 27 additions & 34 deletions .github/workflows/release.yml
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
name: Export de métricas
name: front-release

on:
on:
push:
branches: [master]
tags:
Expand All @@ -9,46 +9,39 @@ on:
branches:
- master
- devel
types: [ closed ]
types: [closed]


jobs:
release:
if: github.event.pull_request.merged == true && contains(github.event.pull_request.labels.*.name, 'NOT RELEASE') == false
runs-on: "ubuntu-latest"
environment: actions

generate-release:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- name: Checkout code
uses: actions/checkout@v3

- name: 'Get Previous tag'
id: previoustag
uses: "WyriHaximus/github-action-get-previous-tag@v1"
with:
fetch-depth: 0

- name: Install dotenv
run: pip install python-dotenv packaging pandas

- name: Cria arquivo .env
run: |
touch ./sonar_scripts/.env
echo GITHUB_TOKEN=${{secrets.PERSONAL_TOKEN}} >> ./sonar_scripts/.env
echo RELEASE_MAJOR=${{ contains(github.event.pull_request.labels.*.name, 'MAJOR RELEASE') }} >> ./sonar_scripts/.env
echo RELEASE_MINOR=${{ contains(github.event.pull_request.labels.*.name, 'MINOR RELEASE') }} >> ./sonar_scripts/.env
echo RELEASE_FIX=${{ contains(github.event.pull_request.labels.*.name, 'FIX RELEASE') }} >> ./sonar_scripts/.env
echo DEVELOP=${{ contains(github.event.pull_request.labels.*.name, 'DEVELOP') }} >> ./sonar_scripts/.env
echo REPO=${{ github.event.repository.name }} >> ./sonar_scripts/.env
fallback: 1.0.0

- name: Criar diretório
run: mkdir -p analytics-raw-data
- name: Use Node.js 16.x
uses: actions/setup-node@v3
with:
node-version: 16.x

- name: Coletar métricas no SonarCloud
run: python ./sonar_scripts/parser.py
- name: Cria métricas do SonarCloud
run: python metrics/sonar-metrics.py ${{ github.event.repository.name }} ${{ github.ref_name }}

- name: Envia métricas para repo de Doc
- name: Commita arquivos de métricas do SonarCloud
run: |
git config --global user.email "${{secrets.GIT}}"
git config --global user.name "${{secrets.GIT}}"
git clone --single-branch --branch main "https://x-access-token:${{secrets.PERSONAL_TOKEN}}@github.com/fga-eps-mds/2024.2-SENTINELA-DOC" doc
git config --global user.email "${{ secrets.GIT_EMAIL }}"
git config --global user.name "${{ secrets.GIT_USER }}"
git clone --single-branch --branch main "https://x-access-token:${{ secrets.PERSONAL_TOKEN }}@github.com/fga-eps-mds/2024.2-SENTINELA-DOC" doc
mkdir -p doc/analytics-raw-data
cp -R analytics-raw-data/*.json doc/analytics-raw-data
cp -R fga-eps-mds*.json doc/analytics-raw-data
cd doc
git add .
git commit -m "Adicionando métricas do repositório ${{ github.event.repository.name }} ${{ github.ref_name }}"
git push
git commit -m "Métricas SonarCloud - ${{ github.event.repository.name }} ${{ github.ref_name }}"
git push
echo "Arquivos de métricas gerado com sucesso."
58 changes: 58 additions & 0 deletions metrics/sonar-metrics.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,58 @@
import json
import sys
import urllib.request
from datetime import datetime

def generate_metrics():
# url base do sonar, inicio da rota que devolverá as métricas
base_url = "https://sonarcloud.io/api/measures/component_tree?component="
# prefixo da disciplina, identificador da organização no sonarcloud
prefix = "fga-eps-mds"
# todas as métricas que serão requisitadas para o sonarcloud
metrics = [
"files",
"functions",
"complexity",
"comment_lines_density",
"duplicated_lines_density",
"coverage",
"ncloc",
"tests",
"test_errors",
"test_failures",
"test_execution_time",
"security_rating"
]

# nome do repositório, vem como argumento no release.yml
repository_name = sys.argv[1]
# nome da branch onde foi chamada o script, vem de argumento no release.yml
ref_name = sys.argv[2]

# url montada
# base url = api do sonar
# prefix = id da org da disciplina
# repository_name = nome do repositorio (unido com prefix separado por _ é o identificador do projeto no sonar)
# o join do metrics une as métricas a serem solicitadas como parâmetros
# branch = específica o nome da branch para pegar as métricas daquela branch em específicp

# Verifica se a referência é uma branch ou uma tag
url = f'{base_url}{prefix}_{repository_name}&metricKeys={",".join(metrics)}&branch={ref_name}' if 'refs/heads/' in sys.argv[2] else f'{base_url}{prefix}_{repository_name}&metricKeys={",".join(metrics)}&tag={ref_name}'


with urllib.request.urlopen(url) as res:
data = json.load(res)
date = datetime.now()
date_padrao_hilmer = f"{date.month}-{date.day}-{date.year}-{date.hour}-{date.minute}-{date.second}"

underlined_repo_name = repository_name[:16] + \
repository_name[16:].replace('-', "_")

filename = f"{prefix}-{underlined_repo_name}-{date_padrao_hilmer}-{ref_name}.json"
print(filename)
with open(filename, "w") as file:
json.dump(data, file)


if __name__ == "__main__":
generate_metrics()
193 changes: 0 additions & 193 deletions sonar_scripts/parser.py

This file was deleted.

0 comments on commit 42ab880

Please sign in to comment.