Skip to content

Commit

Permalink
Merge branch 'develop' into 49-comentarios-videos
Browse files Browse the repository at this point in the history
  • Loading branch information
joao15victor08 authored Nov 16, 2023
2 parents e55e40f + 1283b53 commit 7487c50
Show file tree
Hide file tree
Showing 10 changed files with 341 additions and 8 deletions.
30 changes: 30 additions & 0 deletions .github/templates/bug_report.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
---
name: Bug report
about: Coloque os detalhes do bug
title: "[BUG] nome da tarefa no verbo infinitivo"
labels: bug
assignees: ''

---

**Descrição do bug**
<!--Uma descrição clara e concisa do que é o bug.-->

**Para reproduzir o bug**
<!--Etapas para reproduzir o comportamento:
1. Vá para '...'
2. Clique em '....'
3. Role para baixo até '....'
4. Ver erro-->

**Comportamento esperado**
<!--Uma descrição clara e concisa do que você esperava que acontecesse.-->

**Tarefas**
<!--- [] Descrever a tarefa para a issue-->

**Screenshots**
<!--Se aplicável, adicione capturas de tela para ajudar a explicar seu problema.-->

**Adicional**
<!--Adicione qualquer outro contexto sobre o problema aqui.-->
21 changes: 21 additions & 0 deletions .github/templates/feature_request.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
---
name: Feature request
about: Coloque os detalhes da issue
title: '[Doc] ou [Feature] e o nome da tarefa no verbo infinitivo'
labels: ''
assignees: ''

---

**Descreva sua issue**
<!--Uma descrição clara e concisa do que você quer que aconteça.-->

**Tarefas**
<!--- [] Descrever a tarefa para a issue -->

**Critérios de Aceitação**
<!--Seção para os critérios que definem acerca da aceitação da tarefa. -->
<!--- [ ] Descrever o critério de aceitação -->

**Contexto adicional**
<!--Adicione qualquer outro contexto ou captura de tela sobre a solicitação de recurso aqui. -->
26 changes: 26 additions & 0 deletions .github/templates/pull_request_template.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
<!--- Forneça um resumo geral das suas alterações no título acima -->

## Descrição
<!--- Decreva suas alterações detalhadamente -->

## _Issue_ Relacionada
<!--- Este projeto apenas aceita _pull requests_ relacionadas à _issues_ abertas. -->
<!--- Se está sugerindo uma nova _feature_ ou mudança, por favor discuta em uma _issue_ antes. -->
<!--- Se está corrigindo um _bug_, deve haver uma _issue_ descrevendo-o com passos para reproduzir. -->
<!--- Por favor, adicione o link para a _issue_ aqui: -->
<!--- #nome_da_issue: -->


## Como Isso Foi Testado?
<!--- Por favor, descreva detalhadamente como você testou suas mudanças. -->
<!--- Inclua detalhes do seu ambiente de teste e os testes que você executou -->
<!--- para ver como a sua alteração afeta outras áreas do código, etc. -->

## Capturas de Tela (se apropriado):

## Tipos de Mudanças
<!--- Quais os tipos de alterações introduzidos pelo seu código? Coloque um `x` em todas as caixas que se aplicam: -->
- [ ] _Bug fix_ (alteração que corrige uma _issue_ e não altera funcionalidades já existentes);
- [ ] Nova _feature_ (alteração que adiciona uma funcionalidade e não altera funcionalidades já existentes);
- [ ] Alteração disruptiva (_Breaking change_) (Correção ou funcionalidade que causa alteração nas funcionalidades existentes);
- [ ] Documentação.
24 changes: 24 additions & 0 deletions .github/templates/user_stories.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
---
name: User Stories
about: Coloque os detalhes da US
title: 'USX'
labels: ux
assignees: ''

---

**Descrição da Issue**
<!-- Descreva de forma sucinta a issue e caso necessite, as informações adicionais necessárias para sua realização. -->

**Tarefas**
<!-- - [ ] Tarefa 1
- [ ] Tarefa 2
- [ ] Tarefa 3 -->

**Protótipo**
<!-- Adicionar link -->

**Critérios de Aceitação**
<!-- - [ ] Critério 1
- [ ] Critério 2
- [ ] Critério 3 -->
57 changes: 57 additions & 0 deletions .github/workflows/code-analysis.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,57 @@
name: Análise de Código
on: push

jobs:
sonarcloud:
runs-on: ubuntu-latest

services:
postgres:
image: postgres:alpine
env:
POSTGRES_USER: postgres
POSTGRES_PASSWORD: postgres
POSTGRES_DB: postgres
ports:
- 5432:5432
options: --health-cmd pg_isready --health-interval 10s --health-timeout 5s --health-retries 5

steps:
- name: Check out repository code
uses: actions/checkout@v4

- uses: actions/checkout@v3
- uses: actions/setup-python@v4
with:
python-version: '3.11'

- name: Creating env file
run: |
echo "${{ vars.ENV_FILE }}" > .env
- name: Setup virtual environment
run: |
python -m venv venv
source venv/bin/activate
- name: Install dependencies
run: pip install -r requirements.txt

- name: Executa Pytest
run: PYTHONPATH=src python -m coverage run -m pytest --continue-on-collection-errors --junitxml=./junit.xml
env:
POSTGRES_USER: postgres
POSTGRES_PASSWORD: postgres
POSTGRES_HOST: localhost
POSTGRES_DB: postgres
POSTGRES_PORT: 5432

- name: Gera arquivos de testes no formato .xml
run: python3 -m coverage xml

- name: Executa SonarCloud Scan
if: ${{ always() }}
uses: SonarSource/sonarcloud-github-action@master
env:
GITHUB_TOKEN: ${{ secrets.API_TOKEN_GITHUB }}
SONAR_TOKEN: ${{ secrets.SONAR_TOKEN }}
40 changes: 40 additions & 0 deletions .github/workflows/release.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,40 @@
name: Release

on:
pull_request:
branches:
- main
- develop
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"

steps:
- uses: actions/checkout@v2
with:
fetch-depth: 0

- name: Cria arquivo .env
run: |
touch ./scripts/.env
echo TOKEN=${{ secrets.API_TOKEN_GITHUB }} >> ./scripts/.env
echo RELEASE_MAJOR=${{ contains(github.event.pull_request.labels.*.name, 'MAJOR RELEASE') }} >> ./scripts/.env
echo RELEASE_MINOR=${{ contains(github.event.pull_request.labels.*.name, 'MINOR RELEASE') }} >> ./scripts/.env
echo RELEASE_FIX=${{ contains(github.event.pull_request.labels.*.name, 'FIX RELEASE') }} >> ./scripts/.env
echo DEVELOP=${{ contains(github.event.pull_request.labels.*.name, 'DEVELOP') }} >> ./scripts/.env
- name: Gera release e envia métricas para repositório de DOC
run: |
cd scripts && yarn install && node release.js
git config --global user.email "${{secrets.GIT_USER_EMAIL}}"
git config --global user.name "${{secrets.GIT_USER_NAME}}"
git clone --single-branch --branch main "https://x-access-token:${{secrets.API_TOKEN_GITHUB}}@github.com/fga-eps-mds/${{secrets.GIT_DOC_REPO}}" ${{secrets.GIT_DOC_REPO}}
mkdir -p ${{secrets.GIT_DOC_REPO}}/analytics-raw-data
cp -R analytics-raw-data/*.json ${{secrets.GIT_DOC_REPO}}/analytics-raw-data
cd ${{secrets.GIT_DOC_REPO}}
git add .
git commit -m "Adicionando métricas do repositório ${{ github.event.repository.name }} ${{ github.ref_name }}"
git push
26 changes: 26 additions & 0 deletions scripts/consts.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
const REPO = '2023.2-UnB-TV-VideoService'; // Nome do repositório
const OWNER = 'fga-eps-mds';
const SONAR_ID = 'fga-eps-mds_2023.2-UnB-TV-VideoService'; // Id do projeto no SonarCloud
const METRIC_LIST = [
'files',
'functions',
'complexity',
'comment_lines_density',
'duplicated_lines_density',
'coverage',
'ncloc',
'tests',
'test_errors',
'test_failures',
'test_execution_time',
'security_rating',
];
const SONAR_URL = `https://sonarcloud.io/api/measures/component_tree?component=${SONAR_ID}&metricKeys=${METRIC_LIST.join(
','
)}`;

module.exports = {
SONAR_URL,
REPO,
OWNER,
};
13 changes: 13 additions & 0 deletions scripts/package.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
{
"name": "scripts",
"version": "1.0.0",
"main": "index.js",
"license": "MIT",
"dependencies": {
"@octokit/core": "^3.4.0",
"axios": "^0.21.1",
"dotenv": "^8.2.0",
"fs": "^0.0.1-security",
"gh-release-assets": "^2.0.0"
}
}
103 changes: 103 additions & 0 deletions scripts/release.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,103 @@
const { Octokit } = require('@octokit/core');
const ghReleaseAssets = require('gh-release-assets');
const axios = require('axios');
const fs = require('fs');
require('dotenv').config();

const { SONAR_URL, REPO, OWNER } = require('./consts.js');

const { TOKEN, RELEASE_MAJOR, RELEASE_MINOR, RELEASE_FIX, DEVELOP } = process.env;

const octokit = new Octokit({ auth: TOKEN });

const now = new Date();
const year = now.getFullYear().toString();
const month = (now.getMonth() + 1).toString().padStart(2, '0');
const day = now.getDate().toString().padStart(2, '0');
const hours = now.getHours().toString().padStart(2, '0');
const minutes = now.getMinutes().toString().padStart(2, '0');
const seconds = now.getSeconds().toString().padStart(2, '0');

const getLatestRelease = async () => {
const releases = await octokit.request('GET /repos/{owner}/{repo}/releases', {
owner: OWNER,
repo: REPO,
});
if (releases?.data.length > 0) {
return releases?.data?.[0]?.tag_name;
}
return '0.0.0';
};

const newTagName = async () => {
let oldTag = await getLatestRelease();
oldTag = oldTag.split('.');

if (RELEASE_MAJOR === 'true') {
const majorTagNum = parseInt(oldTag[0]) + 1;
return `${majorTagNum}.0.0`;
}
if (RELEASE_MINOR === 'true') {
const minorTagNum = parseInt(oldTag[1]) + 1;
return `${oldTag[0]}.${minorTagNum}.0`;
}
if (RELEASE_FIX === 'true') {
const fixTagNum = parseInt(oldTag[2]) + 1;
return `${oldTag[0]}.${oldTag[1]}.${fixTagNum}`;
}
if (DEVELOP === 'true') {
return `develop`;
}
// Caso não tenha nenhuma flag de release, é feito um release de fix
const fixTagNum = parseInt(oldTag[2]) + 1;
return `${oldTag[0]}.${oldTag[1]}.${fixTagNum}`;
};

const createRelease = async () => {
const tag = await newTagName();
const res = await octokit.request('POST /repos/{owner}/{repo}/releases', {
owner: OWNER,
repo: REPO,
tag_name: tag,
name: tag,
});
return [res?.data?.upload_url, tag];
};

const saveSonarFile = async (tag) => {
const dirPath = './analytics-raw-data/';
let filePath = `${dirPath}fga-eps-mds-${REPO}-${month}-${day}-${year}-${hours}-${minutes}-${seconds}-v${tag}.json`;
fs.mkdirSync(dirPath);
if(tag === 'develop') {
filePath = `${dirPath}fga-eps-mds-${REPO}-${month}-${day}-${year}-${hours}-${minutes}-${seconds}-${tag}.json`;
}
await axios.get(SONAR_URL).then((res) => {
fs.writeFileSync(filePath, JSON.stringify(res?.data));
});
};

const uploadSonarFile = async (release) => {
await saveSonarFile(release[1]);
ghReleaseAssets({
url: release[0],
token: [TOKEN],
assets: [
`./analytics-raw-data/fga-eps-mds-${REPO}-${month}-${day}-${year}-${hours}-${minutes}-${seconds}-v${release[1]}.json`,
{
name: `fga-eps-mds-${REPO}-${month}-${day}-${year}-${hours}-${minutes}-${seconds}-v${release[1]}.json`,
path: '',
},
],
});
};

const script = async () => {
if(DEVELOP === 'true') {
await saveSonarFile('develop');
return;
}
const release = await createRelease();
await uploadSonarFile(release);
};

script();
9 changes: 1 addition & 8 deletions sonar-project.properties
Original file line number Diff line number Diff line change
@@ -1,19 +1,12 @@
sonar.projectKey=fga-eps-mds_2023.2-UnB-TV-Admin
sonar.projectKey=fga-eps-mds_2023.2-UnB-TV-VideoService
sonar.organization=fga-eps-mds-1

sonar.sources=src
sonar.tests=tests

sonar.exclusions=__pycache__, tests

# This is the name and version displayed in the SonarCloud UI.
#sonar.projectName=2023.2-UnB-TV-Admin
#sonar.projectVersion=1.0


# Path is relative to the sonar-project.properties file. Replace "\" by "/" on Windows.

# Encoding of the source code. Default is default system encoding
sonar.sourceEncoding=UTF-8

sonar.python.version=3.11.5
Expand Down

0 comments on commit 7487c50

Please sign in to comment.