Integracion con GitHub Actions
Archyl proporciona dos GitHub Actions oficiales que integran la gobernanza arquitectonica directamente en tu pipeline CI/CD:
| Action | Disparador | Proposito |
|---|---|---|
| Conformance Check | Pull requests | Validar cambios de codigo contra tus reglas de arquitectura |
| Incremental Discovery | Push a main | Mantener tu modelo C4 sincronizado con los cambios de codigo |
Requisitos previos
Antes de usar las actions, necesitas:
- Una clave API de Archyl — Ve a Profile > API Keys y crea una con scope de escritura
- Un Project ID — Disponible en la URL o pagina de configuracion de tu proyecto
- Almacena la clave API como secreto de GitHub: Settings > Secrets > Actions >
ARCHYL_API_KEY - Opcionalmente almacena el ID del proyecto como variable: Settings > Variables > Actions >
ARCHYL_PROJECT_ID
Action Conformance Check
Ejecuta tus reglas de conformidad en cada pull request y reporta violaciones como comentarios de PR y estados de commit.
Configuracion rapida
# .github/workflows/archyl-conformance.yml
name: Architecture Conformance
on:
pull_request:
branches: [main]
jobs:
conformance:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: archyl/archyl/.github/actions/conformance-check@main
with:
api-key: ${{ secrets.ARCHYL_API_KEY }}
project-id: ${{ vars.ARCHYL_PROJECT_ID }}
Como funciona
- La action recopila todos los archivos modificados en el PR
- El contenido de los archivos se obtiene en el SHA head
- Archivos + contenidos se envian a la API de Archyl para evaluacion
- Todas las reglas de conformidad habilitadas se evaluan contra los archivos modificados
- Se publica un estado de commit (aprobado/fallido)
- Se publica un comentario de PR con detalles de violaciones
- El workflow falla si se encuentran violaciones criticas o altas
Comentario de PR
Cuando se encuentran violaciones, Archyl publica un comentario como este:
Archyl Conformance Check — Failed
12 archivo(s) analizados — 3 violacion(es) encontradas.
Severidad Cantidad Critical 1 High 2
El comentario se actualiza en pushes posteriores — no crea comentarios duplicados.
Entradas
| Entrada | Requerida | Defecto | Descripcion |
|---|---|---|---|
api-key |
Si | — | Clave API de Archyl con scope de escritura |
project-id |
Si | — | UUID del proyecto Archyl |
api-url |
No | https://api.archyl.com/api/v1 |
URL de API personalizada (para auto-alojado) |
fail-on-violations |
No | true |
Fallar el workflow si se encuentran violaciones criticas/altas |
comment |
No | true |
Publicar un comentario de PR con resultados |
Salidas
| Salida | Descripcion |
|---|---|
passed |
true si no hay violaciones criticas/altas, false de lo contrario |
violations |
Numero total de violaciones encontradas |
critical |
Numero de violaciones criticas |
high |
Numero de violaciones altas |
Uso de salidas
Puedes usar las salidas en pasos posteriores:
- uses: archyl/archyl/.github/actions/conformance-check@main
id: archyl
with:
api-key: ${{ secrets.ARCHYL_API_KEY }}
project-id: ${{ vars.ARCHYL_PROJECT_ID }}
fail-on-violations: "false" # No fallar, manejar manualmente
- name: Custom handling
if: steps.archyl.outputs.passed == 'false'
run: |
echo "Found ${{ steps.archyl.outputs.violations }} violations"
echo "Critical: ${{ steps.archyl.outputs.critical }}"
echo "High: ${{ steps.archyl.outputs.high }}"
Action Incremental Discovery
Analiza archivos modificados en push a la rama por defecto y crea descubrimientos pendientes para mantener tu modelo C4 actualizado.
Configuracion rapida
# .github/workflows/archyl-discovery.yml
name: Architecture Sync
on:
push:
branches: [main]
jobs:
discovery:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
with:
fetch-depth: 2 # Requerido para git diff
- uses: archyl/archyl/.github/actions/incremental-discovery@main
with:
api-key: ${{ secrets.ARCHYL_API_KEY }}
project-id: ${{ vars.ARCHYL_PROJECT_ID }}
Como funciona
- La action calcula el diff git entre el commit anterior y el actual
- El contenido de los archivos modificados se obtiene en el SHA head
- Los archivos se envian a la API de Archyl para analisis IA
- Solo se analizan archivos fuente (archivos de test, codigo generado, etc. se omiten)
- Nuevos elementos C4 se crean como descubrimientos pendientes para tu revision
- Los elementos existentes se deduplican automaticamente — sin duplicados
- Se publica un resumen de paso con el estado del job de descubrimiento
Entradas
| Entrada | Requerida | Defecto | Descripcion |
|---|---|---|---|
api-key |
Si | — | Clave API de Archyl con scope de escritura |
project-id |
Si | — | UUID del proyecto Archyl |
api-url |
No | https://api.archyl.com/api/v1 |
URL de API personalizada (para auto-alojado) |
Salidas
| Salida | Descripcion |
|---|---|
job-id |
El ID del job de descubrimiento (para consultar el estado via API) |
changed-files |
Numero de archivos modificados detectados |
Notas importantes
- fetch-depth: 2 es requerido en el paso de checkout para que git pueda calcular el diff
- El descubrimiento crea elementos pendientes — no apareceran en tu modelo C4 hasta que los apruebes
- Solo se analizan archivos fuente (
.go,.ts,.py,.java, etc.) — archivos de config, docs y assets se omiten - La action funciona con eventos
pushypull_request
Workflow combinado
La configuracion recomendada usa ambas actions juntas — conformidad en PRs, descubrimiento en merges:
# .github/workflows/archyl.yml
name: Archyl Architecture
on:
push:
branches: [main]
pull_request:
branches: [main]
jobs:
conformance:
if: github.event_name == 'pull_request'
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: archyl/archyl/.github/actions/conformance-check@main
with:
api-key: ${{ secrets.ARCHYL_API_KEY }}
project-id: ${{ vars.ARCHYL_PROJECT_ID }}
discovery:
if: github.event_name == 'push'
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
with:
fetch-depth: 2
- uses: archyl/archyl/.github/actions/incremental-discovery@main
with:
api-key: ${{ secrets.ARCHYL_API_KEY }}
project-id: ${{ vars.ARCHYL_PROJECT_ID }}
Esto te da un ciclo completo de gobernanza arquitectonica:
- Un desarrollador abre un PR
- Las reglas de conformidad validan los cambios contra tu arquitectura
- Las violaciones se reportan como comentarios de PR
- Una vez aprobado y fusionado, el descubrimiento incremental actualiza el modelo C4
- El modelo siempre esta actualizado para la proxima verificacion de PR
Archyl auto-alojado
Si ejecutas Archyl on-premise, configura la entrada api-url a tu instancia:
- uses: archyl/archyl/.github/actions/conformance-check@main
with:
api-key: ${{ secrets.ARCHYL_API_KEY }}
project-id: ${{ vars.ARCHYL_PROJECT_ID }}
api-url: "https://archyl.internal.company.com/api/v1"
Alternativa por Webhook
Si prefieres webhooks sobre GitHub Actions, puedes configurar webhooks push/PR directamente en la configuracion de tu proyecto. Consulta Webhooks para mas detalles.
El enfoque webhook:
- No requiere configuracion de GitHub Action
- Usa el token OAuth del propietario del proyecto para acceso a la API
- Soporta GitHub y GitLab
- Se ejecuta en la infraestructura de Archyl (sin minutos de GitHub Action usados)
El enfoque GitHub Action:
- Usa tu propia clave API (mas explicito)
- Se ejecuta en la infraestructura de GitHub
- Mas facil de personalizar (agregar condiciones, filtrar rutas, combinar con otros pasos)
- Funciona con cualquier proveedor Git que soporte GitHub Actions