-
Notifications
You must be signed in to change notification settings - Fork 0
Integracion CI
pfranccino edited this page Jun 7, 2026
·
1 revision
gradle-sanity tiene flags para fallar la build si se detectan problemas de arquitectura, y --json en todos los CLIs para parsear resultados en el pipeline.
# Falla (exit 1) si hay ciclos
gradle-sanity /ruta/proyecto --fail-on-cycle --quiet
# Falla (exit 1) si el score cae por debajo de 70
gradle-sanity /ruta/proyecto --fail-on-score-below 70 --quiet
# Combinados
gradle-sanity /ruta/proyecto --fail-on-cycle --fail-on-score-below 70 --quietgradle-sanity /ruta/proyecto --json > sanity-report.jsonEstructura (recortada — ver salida real completa en Comandos):
{
"path": "...",
"score": 100,
"modules": { "core": { "ca": 6, "ce": 0, "I": 0.0 }, "...": {} },
"cycles": [],
"sdp_violations": [],
"coupling_issues": [ { "module": "app", "kind": "app", "I": 0.75, "ca": 1, "max_ca": 0 } ]
}Campos clave para parsear en el pipeline: score (int 0–100) y los arrays cycles, sdp_violations, api_issues, fan_out_issues, version_issues, orphan_modules, coupling_issues (vacíos = sin problemas de ese tipo).
El repo incluye un workflow completo en examples/github-actions-dependency-health.yml. Resumen de lo que hace:
name: Android Dependency Health
on:
push:
branches: [main, develop]
pull_request:
branches: [main]
jobs:
dependency-health:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/setup-python@v5
with:
python-version: "3.11"
- name: Install android-gradle-analyzer
run: pipx install git+https://github.com/pfranccino/android-gradle-analyzer.git
- name: Check for dependency cycles
run: |
gradle-sanity ${{ github.workspace }} \
--fail-on-cycle --quiet --json > sanity-report.json
- name: Enforce minimum architecture score
run: |
gradle-sanity ${{ github.workspace }} \
--fail-on-score-below 70 --quiet
- name: Generate dependency diagram
if: always()
run: |
gradle-analyzer ${{ github.workspace }} \
--format mermaid --output-dir diagrams --quiet
- name: Upload reports
if: always()
uses: actions/upload-artifact@v4
with:
name: dependency-reports
path: |
diagrams/
sanity/
sanity-report.json
retention-days: 30El workflow incluye además un job opcional impact-check que corre gradle-impact cuando cambia un módulo concreto (descomenta el filtro paths y ajusta el nombre del módulo).