diff --git a/.github/workflows/02-tests-ci.yml b/.github/workflows/02-tests-ci.yml index 3a9801b..a215434 100644 --- a/.github/workflows/02-tests-ci.yml +++ b/.github/workflows/02-tests-ci.yml @@ -1,13 +1,14 @@ name: "Nível 2: Testes Automatizados" on: pull_request: - branches: [ main ] + branches: [main] + env: - NODE_VERSION: '18' + NODE_VERSION: "18" CHALLENGE_LEVEL: 2 CHALLENGE_NAME: "testes-automatizados" - COVERAGE_MIN: 80 # Cobertura mínima exigida em porcentagem + COVERAGE_MIN: 99 # Cobertura mínima exigida em porcentagem jobs: tests-and-coverage: @@ -20,11 +21,18 @@ jobs: - name: "Checkout do código" uses: actions/checkout@v4 - # INSIRA AQUI A LÓGICA PARA RODAR OS TESTES E VERIFICAR A COBERTURA - ### - ### - ### + - name: "Setup Node.js" + uses: actions/setup-node@v5 + with: + node-version: ${{ env.NODE_VERSION }} + - name: "Instalar Deps" + run: npm ci + + - name: "Executar tests" + run: npm run tests + + - name: "Extrair porcentagem de cobertura" # Esse step será validado pelo desafio, não altere o nome. No final, ele deve gerar o output "coverage" com a porcentagem de cobertura. id: coverage run: | @@ -32,47 +40,54 @@ jobs: echo "Coverage: $COVERAGE%" echo "coverage=$COVERAGE" >> $GITHUB_OUTPUT + + - name: "Valida se os testes passaram" + if: ${{ steps.coverage.outputs.coverage < env.COVERAGE_MIN }} + run: | + echo "Cobertura mínima não atendida: Esperado - ${{ env.COVERAGE_MIN }}%. Atingido: ${{ steps.coverage.outputs.coverage }}%" + exit 1 + generate-certificate: # DAQUI PARA BAIXO, NÃO ALTERAR - name: "Desafio Nível 2 - Certificado" - runs-on: ubuntu-latest - needs: tests-and-coverage - if: success() && needs.tests-and-coverage.outputs.coverage != '' - - steps: - - name: "Gerar certificado" - run: | - mkdir -p certificates - cat > certificates/level-2-certificate.md << EOF - # Certificado de Conclusão - Nível 2 - - **Descomplicando Github Actions - GitHub Actions Edition** - --- - - Este certificado atesta que **${{ github.actor }}** concluiu com sucesso: - ## Nível 2: Testes Automatizados - - **Competências desenvolvidas:** - - Automação de testes - - Análise de cobertura - - Lógica de validação com coverage mínimo - - Upload de artefatos - - **Cobertura:** >= ${{ env.COVERAGE_MIN }}% - **Data de conclusão:** $(date) - **Repositório:** ${{ github.repository }} - **Workflow:** ${{ github.run_id }} - - --- - **Badge conquistado:** Testes Automatizados - - --- - *Certificado gerado automaticamente pelo GitHub Actions* - *LINUXtips* - EOF - - - name: "Upload do certificado" - uses: actions/upload-artifact@v4 - with: - name: level-2-certificate - path: certificates/ - retention-days: 30 + name: "Desafio Nível 2 - Certificado" + runs-on: ubuntu-latest + needs: tests-and-coverage + if: success() && needs.tests-and-coverage.outputs.coverage != '' + + steps: + - name: "Gerar certificado" + run: | + mkdir -p certificates + cat > certificates/level-2-certificate.md << EOF + # Certificado de Conclusão - Nível 2 + + **Descomplicando Github Actions - GitHub Actions Edition** + --- + + Este certificado atesta que **${{ github.actor }}** concluiu com sucesso: + ## Nível 2: Testes Automatizados + + **Competências desenvolvidas:** + - Automação de testes + - Análise de cobertura + - Lógica de validação com coverage mínimo + - Upload de artefatos + + **Cobertura:** >= ${{ env.COVERAGE_MIN }}% + **Data de conclusão:** $(date) + **Repositório:** ${{ github.repository }} + **Workflow:** ${{ github.run_id }} + + --- + **Badge conquistado:** Testes Automatizados + + --- + *Certificado gerado automaticamente pelo GitHub Actions* + *LINUXtips* + EOF + + - name: "Upload do certificado" + uses: actions/upload-artifact@v4 + with: + name: level-2-certificate + path: certificates/ + retention-days: 30 diff --git a/README.md b/README.md index 7bb74fc..c283a5c 100644 --- a/README.md +++ b/README.md @@ -1,8 +1,10 @@ +## Testando GitHub Actions Vivaldo Junior 09/10/2025 + # Descomplicando GitHub Actions Se inscreva na aula ao vivo e gratuita: https://quiz.linuxtips.io/github-actions -Bem-vindo ao **Descomplicando GitHub Actions**! Este projeto foi criado pela comunidade **LINUXtips** para você aprender os conceitos básicos de CI/CD na prática de forma simples e direta. +Bem-vindo ao Vivaldo Junior ao **Descomplicando GitHub Actions**! Este projeto foi criado pela comunidade **LINUXtips** para você aprender os conceitos básicos de CI/CD na prática de forma simples e direta. Este projeto foi desenhado para ser o material de apoio do vídeo "Descomplicando GitHub Actions" no [canal da LINUXtips no YouTube](https://youtube.com/linuxtips). A ideia é que você possa codificar junto e aprender na prática.