Update README.md #2
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# .github/workflows/build.yml | |
# Basado en la documentacion de GitHub Actions | |
# => https://docs.github.com/en/actions | |
name: build | |
# "on" controla cuando se ejecuta la action. En este caso, dispara el workflow | |
# ante un evento de "push" o de "pull request", pero solo cuando ocurra | |
# en las ramas de nombre "main" o "master". Un PR a "develop", o un commit | |
# en un branch sin PRs orientados a esas dos que indicamos no lo activará. | |
on: | |
push: | |
branches: [featureObserver] | |
pull_request: | |
branches: [featureObserver] | |
# "jobs" describe los diferentes trabajos a realizar. | |
jobs: | |
# En esta ocasión tenemos uno solo, para buildear, testear y subir la info de coverage. | |
gradle-plus-coverage: | |
# "runs-on" es el encargado de correr el job. En nuestro caso una VM con ubuntu. | |
runs-on: ubuntu-latest | |
# "steps" enumera todos los pasos a seguir cuando se ejecute este job. | |
steps: | |
# Primero hacemos checkout a nuestro repo para que el job pueda acceder al mismo. | |
- name: Checkout Repo | |
# Para muchas funcionalidades, podemos aprovechar workflow pre-construidos mediante "uses" | |
uses: actions/checkout@v4 | |
# Configuramos el Java apropiado en nuestro ubuntu. | |
- name: Set Up Java | |
uses: actions/setup-java@v4 | |
# "with" nos deja especificar parametros del action que importamos, tales como versión y distribución a usar. | |
with: | |
distribution: 'temurin' | |
java-version: '21' | |
# También podemos ejecutar comandos de bash, mediante "run" | |
- run: | | |
chmod +x ./gradlew | |
# Para buildear, testear y correr jacoco tenemos una meta de gradle, runOnGithub, agregada a nuestro proyecto. | |
- uses: gradle/actions/setup-gradle@v3 | |
with: | |
arguments: runOnGitHub | |
# runOnGitHub, mediante jacoco, genera reportes de cobertura en distintos formatos (html, csv, lcov, entre otros). | |
# Con el reporte en formato csv generamos una imagen svg que publica el % de código cubierto por los tests. | |
# Cabe aclarar que esto se crea en el ubuntu de GH Actions (donde corre el CI), pero no se encuentra en el repositorio (todavÃa). | |
- name: Generate JaCoCo Badge | |
uses: cicirello/jacoco-badge-generator@v2 | |
with: | |
badges-directory: .github/badges | |
generate-coverage-badge: true | |
coverage-badge-filename: jacoco.svg | |
jacoco-csv-file: build/reports/jacoco/test/jacocoTestReport.csv | |
# Para persistir el badge de cobertura que generamos, podemos hacer un push a la rama desde el ubuntu. | |
# Siendo ejecutado "por github mismo", tendrá permiso para commitear. | |
- name: Commit and push badge | |
# Mediante "if" restringimos para no hacer este paso en un pull request, de forma tal que no se persista | |
# el cambio en la medalla tras cada push a la rama final, hasta mergear definitivamente los cambios. | |
if: ${{ github.event_name != 'pull_request' }} | |
run: | | |
cd .github/badges | |
if [[ `git status --porcelain *.svg` ]]; then | |
git config --global user.name 'github-actions' | |
git config --global user.email '41898282+github-actions[bot]@users.noreply.github.com' | |
git add *.svg | |
git commit -m "Autogenerated JaCoCo coverage badge" *.svg | |
git push | |
fi | |
# ¡Pero en un PR podemos comentar la cobertura! Haremos el chequeo inverso para cubrirlo | |
- name: Post coverage summary in PR | |
if: ${{ github.event_name == 'pull_request' }} | |
uses: madrapps/[email protected] | |
with: | |
paths: ${{ github.workspace }}/build/reports/jacoco/test/jacocoTestReport.xml | |
token: ${{ secrets.GITHUB_TOKEN }} | |
title: Estado Actual de Cobertura | |
# Finalmente, subimos un artefacto con el reporte de jacoco en formato HTML. | |
# Estos archivos quedarán disponibles para descargar y revisar en Github durante un tiempo, y luego se borrarán. | |
- name: Upload Jacoco coverage report | |
uses: actions/upload-artifact@v4 | |
with: | |
name: jacoco-report | |
path: build/jacocoHtml/ | |
# # Opcional: PodrÃamos subir nuestro reporte a un servicio como codecov. | |
# - name: Send JaCoCo reports to CodeCov | |
# run: | | |
# curl -Os https://uploader.codecov.io/latest/linux/codecov | |
# chmod +x codecov | |
# ./codecov -t ${{ CODECOV_TOKEN }} |