Integración con GitHub Actions

Archyl proporciona seis GitHub Actions oficiales que integran la gobernanza arquitectónica directamente en tu pipeline de CI/CD.
| Action | Disparador | Propósito |
|---|---|---|
| Conformance Check | Pull requests | Validar los cambios de código contra las reglas de arquitectura |
| Drift Score | Pull requests | Calcular la puntuación de deriva y aplicar un quality gate |
| Generate Context | Push a main | Generar archyl.txt para agentes de IA |
| Auto CR | Push a main | Crear solicitudes de cambio de arquitectura en cada merge |
| Release | Push / tags | Registrar las releases en Archyl |
| Sync | Push a main | Sincronizar el DSL archyl.yaml con Archyl |
Todas las actions están publicadas en archyl-com/actions y versionadas con @v1.
Requisitos previos
Antes de usar las actions, necesitas:
- Una clave API de Archyl — Ve a Perfil > Claves API y crea una con scope de escritura
- Un ID de organización — Lo encontrarás en la página de configuración de tu organización
- Un ID de proyecto — Lo encontrarás en la URL o en la página de configuración de tu proyecto
- Guárdalos como secretos y variables de GitHub:
Settings > Secrets > Actions:
ARCHYL_API_KEY # Your API key (secret)
Settings > Variables > Actions:
ARCHYL_ORG_ID # Organization UUID
ARCHYL_PROJECT_ID # Project UUID
Inicio rápido
La forma más rápida de empezar es usar los workflows reutilizables de Archyl — uno para los PR y otro para los push a la rama main:
# .github/workflows/archyl.yml
name: Archyl Architecture
on:
push:
branches: [main]
pull_request:
branches: [main]
jobs:
# Conformance check + drift score on PRs (run in parallel)
pr-checks:
if: github.event_name == 'pull_request'
uses: archyl-com/actions/.github/workflows/archyl-pr.yml@v1
with:
organization-id: ${{ vars.ARCHYL_ORG_ID }}
project-id: ${{ vars.ARCHYL_PROJECT_ID }}
drift-threshold: 70
secrets:
api-key: ${{ secrets.ARCHYL_API_KEY }}
# Generate context + sync + release on merge to main
main-sync:
if: github.event_name == 'push'
uses: archyl-com/actions/.github/workflows/archyl-main.yml@v1
with:
organization-id: ${{ vars.ARCHYL_ORG_ID }}
project-id: ${{ vars.ARCHYL_PROJECT_ID }}
sync: true
release: true
release-environment: 'production'
secrets:
api-key: ${{ secrets.ARCHYL_API_KEY }}
Esto te da un ciclo completo de gobernanza arquitectónica: las reglas de conformidad validan cada PR, la puntuación de deriva mide hasta qué punto tu código coincide con el modelo y, al hacer merge, el modelo se mantiene sincronizado automáticamente.
Actions individuales
Conformance Check
Ejecuta tus reglas de conformidad sobre los archivos modificados en un pull request. Anota las violaciones en línea y publica un comentario de resumen en el PR.
- uses: archyl-com/actions/conformance-check@v1
with:
api-key: ${{ secrets.ARCHYL_API_KEY }}
organization-id: ${{ vars.ARCHYL_ORG_ID }}
project-id: ${{ vars.ARCHYL_PROJECT_ID }}
Entradas
| Entrada | Requerida | Por defecto | Descripción |
|---|---|---|---|
api-key |
Sí | — | Clave API de Archyl con scope de escritura |
organization-id |
Sí | — | UUID de la organización de Archyl |
project-id |
Sí | — | UUID del proyecto de Archyl |
api-url |
No | https://api.archyl.com |
URL de API personalizada (para instalaciones auto-alojadas) |
fail-on |
No | error |
Severidad mínima que hace fallar la verificación: error, warning o none |
comment-on-pr |
No | true |
Publicar un comentario de resumen en el pull request |
github-token |
No | ${{ github.token }} |
Token de GitHub para los comentarios del PR |
max-file-lines |
No | 200 |
Número máximo de líneas enviadas por archivo (reduce el uso de tokens) |
chunk-size |
No | 20 |
Número de archivos enviados por llamada a la API (para diffs grandes) |
Salidas
| Salida | Descripción |
|---|---|
check-id |
UUID de la verificación de conformidad |
total-violations |
Número total de violaciones encontradas |
errors |
Número de violaciones de nivel error |
warnings |
Número de violaciones de nivel warning |
infos |
Número de violaciones de nivel info |
status |
Resultado de la verificación: pass o fail |
Uso de las salidas
- uses: archyl-com/actions/conformance-check@v1
id: conformance
with:
api-key: ${{ secrets.ARCHYL_API_KEY }}
organization-id: ${{ vars.ARCHYL_ORG_ID }}
project-id: ${{ vars.ARCHYL_PROJECT_ID }}
fail-on: none # Don't fail, handle manually
- name: Custom handling
if: steps.conformance.outputs.status == 'fail'
run: |
echo "Found ${{ steps.conformance.outputs.total-violations }} violations"
echo "Errors: ${{ steps.conformance.outputs.errors }}"
echo "Warnings: ${{ steps.conformance.outputs.warnings }}"
Drift Score
Calcula la puntuación de deriva arquitectónica — hasta qué punto tu código base coincide con tu modelo C4. Opcionalmente, aplica un quality gate haciendo fallar el build si la puntuación cae por debajo de un umbral.
- uses: archyl-com/actions/drift-score@v1
with:
api-key: ${{ secrets.ARCHYL_API_KEY }}
organization-id: ${{ vars.ARCHYL_ORG_ID }}
project-id: ${{ vars.ARCHYL_PROJECT_ID }}
threshold: 70
Entradas
| Entrada | Requerida | Por defecto | Descripción |
|---|---|---|---|
api-key |
Sí | — | Clave API de Archyl con scope de escritura |
organization-id |
Sí | — | UUID de la organización de Archyl |
project-id |
Sí | — | UUID del proyecto de Archyl |
api-url |
No | https://api.archyl.com |
URL de API personalizada (para instalaciones auto-alojadas) |
threshold |
No | 0 |
Puntuación de deriva mínima aceptable (0-100). Falla si la puntuación está por debajo. Ponlo a 0 para que nunca falle. |
poll-interval |
No | 5 |
Segundos entre consultas de estado mientras se espera el cálculo |
poll-timeout |
No | 300 |
Número máximo de segundos de espera hasta que termine el cálculo |
comment-on-pr |
No | false |
Publicar un comentario de resumen en el pull request |
github-token |
No | ${{ github.token }} |
Token de GitHub para los comentarios del PR |
Salidas
| Salida | Descripción |
|---|---|
score |
Puntuación de deriva (0-100) |
score-id |
UUID del registro de la puntuación de deriva |
total-elements |
Número total de elementos comparados |
matched-count |
Número de elementos coincidentes |
missing-in-code |
Número de elementos que faltan en el código |
new-in-code |
Número de elementos nuevos encontrados en el código |
status |
Estado del cálculo: completed o failed |
Generate Context
Genera un archivo archyl.txt con tu contexto arquitectónico, optimizado para agentes de IA y LLM. Puede hacer commit automático del archivo cuando cambia.
- uses: archyl-com/actions/generate-context@v1
with:
api-key: ${{ secrets.ARCHYL_API_KEY }}
organization-id: ${{ vars.ARCHYL_ORG_ID }}
project-id: ${{ vars.ARCHYL_PROJECT_ID }}
commit: 'true'
Entradas
| Entrada | Requerida | Por defecto | Descripción |
|---|---|---|---|
api-key |
Sí | — | Clave API de Archyl con scope de lectura |
organization-id |
Sí | — | UUID de la organización de Archyl |
project-id |
Sí | — | UUID del proyecto de Archyl |
api-url |
No | https://api.archyl.com |
URL de API personalizada (para instalaciones auto-alojadas) |
output-file |
No | archyl.txt |
Ruta donde se escribe el archivo de contexto generado |
format |
No | markdown |
Formato de salida: markdown para un briefing optimizado para LLM, full para JSON estructurado + markdown |
commit |
No | false |
Hacer commit automático del archivo generado si ha cambiado |
commit-message |
No | chore: update archyl.txt architecture context |
Mensaje de commit del commit automático |
Salidas
| Salida | Descripción |
|---|---|
file-path |
Ruta del archivo de contexto generado |
changed |
Si el contenido del archivo ha cambiado (true o false) |
token-count |
Número aproximado de tokens del archivo generado |
Auto CR
Crea automáticamente una solicitud de cambio de arquitectura en Archyl cuando se hace merge de código en main. Analiza el diff para detectar los cambios relevantes para la arquitectura y los registra para su revisión.
- uses: archyl-com/actions/auto-cr@v1
with:
api-key: ${{ secrets.ARCHYL_API_KEY }}
organization-id: ${{ vars.ARCHYL_ORG_ID }}
project-id: ${{ vars.ARCHYL_PROJECT_ID }}
Entradas
| Entrada | Requerida | Por defecto | Descripción |
|---|---|---|---|
api-key |
Sí | — | Clave API de Archyl con scope de escritura |
organization-id |
Sí | — | UUID de la organización de Archyl |
project-id |
Sí | — | UUID del proyecto de Archyl |
api-url |
No | https://api.archyl.com |
URL de API personalizada (para instalaciones auto-alojadas) |
github-token |
No | ${{ github.token }} |
Token de GitHub para los comentarios en commits y el acceso al diff |
base-ref |
No | (detectado automáticamente) | Ref base con la que comparar |
comment-on-commit |
No | false |
Publicar un comentario en el commit de merge con el enlace a la solicitud de cambio |
Salidas
| Salida | Descripción |
|---|---|
request-id |
UUID de la solicitud de cambio creada |
changes-detected |
Número de cambios relevantes para la arquitectura encontrados |
status |
created, skipped (sin cambios) o failed |
Release
Crea o actualiza una release en Archyl desde tu pipeline de CI. Registra los despliegues, asócialos a entornos y elementos C4, y alimenta tus métricas DORA.
- uses: archyl-com/actions/release@v1
with:
api-key: ${{ secrets.ARCHYL_API_KEY }}
project-id: ${{ vars.ARCHYL_PROJECT_ID }}
status: deployed
environment: production
Entradas
| Entrada | Requerida | Por defecto | Descripción |
|---|---|---|---|
api-key |
Sí | — | Clave API de Archyl con scope de escritura |
project-id |
Sí | — | UUID del proyecto de Archyl |
api-url |
No | https://api.archyl.com |
URL de API personalizada (para instalaciones auto-alojadas) |
version |
No | $GITHUB_REF_NAME |
Versión de la release |
status |
No | deployed |
Estado de la release: planned, in_progress, deployed, rolled_back, failed |
changelog |
No | — | Changelog o descripción de la release |
environment |
No | — | Nombre del entorno de destino (p. ej. production, staging). Se crea automáticamente si no existe. |
container-id |
No | — | UUID del contenedor de Archyl que se asocia a esta release |
system-id |
No | — | UUID del sistema de Archyl que se asocia a esta release |
source-url |
No | — | URL de vuelta al origen (commit, página de la release, etc.) |
Salidas
| Salida | Descripción |
|---|---|
release-id |
UUID de la release creada o actualizada |
Sync
Sincroniza tu archivo DSL archyl.yaml con Archyl. Declara tu arquitectura como código y envía los cambios en cada commit.
- uses: archyl-com/actions/sync@v1
with:
api-key: ${{ secrets.ARCHYL_API_KEY }}
project-id: ${{ vars.ARCHYL_PROJECT_ID }}
Entradas
| Entrada | Requerida | Por defecto | Descripción |
|---|---|---|---|
api-key |
Sí | — | Clave API de Archyl con scope de escritura |
project-id |
Sí | — | UUID del proyecto de Archyl |
api-url |
No | https://api.archyl.com |
URL de API personalizada (para instalaciones auto-alojadas) |
file |
No | archyl.yaml |
Ruta al archivo archyl.yaml, relativa a la raíz del repositorio |
Salidas
| Salida | Descripción |
|---|---|
systems-created |
Número de sistemas creados |
containers-created |
Número de contenedores creados |
components-created |
Número de componentes creados |
relationships-created |
Número de relaciones creadas |
summary |
Resumen legible del resultado de la sincronización |
Workflows reutilizables
Archyl ofrece dos workflows reutilizables que combinan varias actions para los escenarios más habituales.
archyl-pr.yml
Ejecuta la verificación de conformidad y la puntuación de deriva en paralelo en cada pull request.
jobs:
archyl:
uses: archyl-com/actions/.github/workflows/archyl-pr.yml@v1
with:
organization-id: ${{ vars.ARCHYL_ORG_ID }}
project-id: ${{ vars.ARCHYL_PROJECT_ID }}
drift-threshold: 70 # Fail if drift score drops below 70
fail-on: error # Fail on error-level conformance violations
comment-on-pr: true # Post PR comments with results
secrets:
api-key: ${{ secrets.ARCHYL_API_KEY }}
Todas las entradas son opcionales excepto organization-id, project-id y api-key.
archyl-main.yml
Ejecuta generate-context, sync y release en cada push a main. Cada job se puede activar o desactivar de forma independiente.
jobs:
archyl:
uses: archyl-com/actions/.github/workflows/archyl-main.yml@v1
with:
organization-id: ${{ vars.ARCHYL_ORG_ID }}
project-id: ${{ vars.ARCHYL_PROJECT_ID }}
generate-context: true # Generate and auto-commit archyl.txt
context-format: markdown # LLM-optimized format
sync: true # Sync archyl.yaml to Archyl
sync-file: archyl.yaml # Path to your archyl.yaml
release: true # Create a release record
release-status: deployed
release-environment: production
secrets:
api-key: ${{ secrets.ARCHYL_API_KEY }}
Otras plataformas de CI
GitLab CI
Archyl ofrece una plantilla de CI incluible para GitLab. Ejecuta la verificación de conformidad y la puntuación de deriva en los merge requests, y genera el contexto en los push a la rama por defecto.
Configuración:
Añade las variables de CI/CD necesarias en Settings > CI/CD > Variables:
ARCHYL_API_KEY(enmascarada, protegida)ARCHYL_ORG_IDARCHYL_PROJECT_ID
Incluye la plantilla en tu
.gitlab-ci.yml:
include:
- remote: 'https://raw.githubusercontent.com/archyl-com/actions/main/ci-templates/gitlab/.archyl-ci.yml'
Esto añade tres jobs a tu pipeline:
archyl:conformance— se ejecuta en los merge requestsarchyl:drift-score— se ejecuta en los merge requestsarchyl:generate-context— se ejecuta en los push a la rama por defecto
Variables opcionales: ARCHYL_API_URL, ARCHYL_DRIFT_THRESHOLD.
Bitbucket Pipelines
Copia la plantilla de pipelines de Archyl en tu bitbucket-pipelines.yml.
Configuración:
Añade las variables de repositorio necesarias en Settings > Repository variables:
ARCHYL_API_KEY(segura)ARCHYL_ORG_IDARCHYL_PROJECT_ID
Añade los pasos del pipeline:
pipelines:
pull-requests:
'**':
- step:
name: "Archyl Conformance Check"
image: alpine:3.20
script:
- apk add --no-cache curl jq git
- # ... conformance check script
- step:
name: "Archyl Drift Score"
image: alpine:3.20
script:
- apk add --no-cache curl jq
- # ... drift score script
branches:
main:
- step:
name: "Archyl Generate Context"
image: alpine:3.20
script:
- apk add --no-cache curl jq git
- # ... generate context script
La plantilla completa está disponible en archyl-com/actions/ci-templates/bitbucket/archyl-pipelines.yml.
Ejemplo combinado
Un workflow completo que usa las seis actions juntas:
# .github/workflows/architecture.yml
name: Archyl Architecture
on:
push:
branches: [main]
pull_request:
branches: [main]
jobs:
# --- PR checks (parallel) ---
conformance:
if: github.event_name == 'pull_request'
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: archyl-com/actions/conformance-check@v1
with:
api-key: ${{ secrets.ARCHYL_API_KEY }}
organization-id: ${{ vars.ARCHYL_ORG_ID }}
project-id: ${{ vars.ARCHYL_PROJECT_ID }}
drift:
if: github.event_name == 'pull_request'
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: archyl-com/actions/drift-score@v1
with:
api-key: ${{ secrets.ARCHYL_API_KEY }}
organization-id: ${{ vars.ARCHYL_ORG_ID }}
project-id: ${{ vars.ARCHYL_PROJECT_ID }}
threshold: 70
comment-on-pr: 'true'
# --- Main branch (after merge) ---
generate-context:
if: github.event_name == 'push'
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: archyl-com/actions/generate-context@v1
with:
api-key: ${{ secrets.ARCHYL_API_KEY }}
organization-id: ${{ vars.ARCHYL_ORG_ID }}
project-id: ${{ vars.ARCHYL_PROJECT_ID }}
commit: 'true'
sync:
if: github.event_name == 'push'
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: archyl-com/actions/sync@v1
with:
api-key: ${{ secrets.ARCHYL_API_KEY }}
project-id: ${{ vars.ARCHYL_PROJECT_ID }}
auto-cr:
if: github.event_name == 'push'
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
with:
fetch-depth: 0
- uses: archyl-com/actions/auto-cr@v1
with:
api-key: ${{ secrets.ARCHYL_API_KEY }}
organization-id: ${{ vars.ARCHYL_ORG_ID }}
project-id: ${{ vars.ARCHYL_PROJECT_ID }}
release:
if: github.event_name == 'push'
runs-on: ubuntu-latest
steps:
- uses: archyl-com/actions/release@v1
with:
api-key: ${{ secrets.ARCHYL_API_KEY }}
project-id: ${{ vars.ARCHYL_PROJECT_ID }}
status: deployed
environment: production
source-url: ${{ github.server_url }}/${{ github.repository }}/commit/${{ github.sha }}
Ver los resultados
Los resultados de todas las verificaciones lanzadas desde CI aparecen en Archyl:
- Verificaciones de conformidad — visibles en el panel de conformidad (pestaña Hub de Agentes > Panel). Haz clic en cualquier verificación para ver las violaciones agrupadas por archivo.
- Puntuaciones de deriva — visibles en la sección de deriva de tu proyecto. Sigue la evolución de la puntuación a lo largo del tiempo.
- Solicitudes de cambio — visibles en la sección Solicitudes. Revisa los cambios de arquitectura antes de aceptarlos.
- Releases — visibles en la sección Releases y en la página Entornos. Alimentan tus métricas DORA.
- Resultados de la sincronización — se reflejan de inmediato en tu modelo C4.
Consulta Reglas de conformidad para más detalles sobre el panel de conformidad.
Archyl auto-alojado
Si ejecutas Archyl on-premise, define la entrada api-url en cualquier action para que apunte a tu instancia:
- uses: archyl-com/actions/conformance-check@v1
with:
api-key: ${{ secrets.ARCHYL_API_KEY }}
organization-id: ${{ vars.ARCHYL_ORG_ID }}
project-id: ${{ vars.ARCHYL_PROJECT_ID }}
api-url: "https://archyl.internal.company.com"
El valor por defecto es https://api.archyl.com para todas las actions.