Más allá del ciclo CI/CD podemos automatizar diferentes actividades a nivel de repositorio. A continuación veremos algunas de ellas.
Si tenemos un proyecto robusto sobre el que se abren y cierran Issues debemos llevar de alguna manera monitoreo sobre qué conversaciones están vigentes y cuáles no, para esto crearemos un Workflow que correrá todos los días y verificará el estado del Issue/PR.
El trigger de este Workflow será tipo Schedule y correrá todos los días a las 1:30AM en horario UTC, la única tarea que llevará a cabo será sin-actividad, que mediante el Action stale revisará todos los hilos abiertos y manejará 2 estados: el primero verificará si el Issue o PR llevan más de 60 días inactivos, si es así, se marcará un temporizador de 7 días para reactivarlo y se aplicará la etiqueta sin-actividad.
name: 'Cerrar Issues y PRs sin actividad'
on:
schedule:
- cron: '30 1 * * *'
jobs:
sin-actividad:
runs-on: ubuntu-latest
steps:
- uses: actions/stale@v7
with:
stale-issue-message: 'Este Issue no tiene actividad desde hace más de 60 días, si no tiene actividad en los próximos 7 días, se eliminará'
stale-pr-message: 'Este Pull Request no tiene actividad desde hace más de 60 días, si no tiene actividad en los próximos 7 días, se eliminará'
stale-issue-label: 'sin-actividad'
stale-pr-label: 'sin-actividad'
SonarCloud es una herramienta que realiza análisis estático a nuestro código, es decir, revisa el source sin compilarlo ni buildearlo para buscar vulnerabilidades a nivel superficial.
Este Workflow se correrá bajo push en la rama main y bajo PR en las etiquetas opened, syncronize (push a una rama que tiene un PR abierto) y reopened, lo que hará será un checkout y realizar un scan de SonarCloud, para esto usaremos el respectivo Action con nuestro Github Token y Sonar Token.
name: SonarCloud
run-name: SonarCloud
on:
push:
branches:
- main
pull_request:
types: [opened, synchronize, reopened]
jobs:
sonarcloud:
name: SonarCloud
runs-on: ubuntu-latest
steps:
- name: "Checkout repositorio"
uses: actions/checkout@24cb9080177205b6e8c946b17badbe402adc938f #v3: v3.4.0
with:
fetch-depth: 0
- name: SonarCloud Scan
uses: SonarSource/sonarcloud-github-action@master
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
SONAR_TOKEN: ${{ secrets.SONAR_TOKEN }}