Integrazione GitHub Actions
Archyl fornisce due GitHub Actions ufficiali che integrano la governance architetturale direttamente nella tua pipeline CI/CD:
| Action | Trigger | Scopo |
|---|---|---|
| Conformance Check | Pull request | Validare le modifiche al codice contro le tue regole di architettura |
| Incremental Discovery | Push su main | Mantenere il tuo modello C4 sincronizzato con le modifiche al codice |
Prerequisiti
Prima di utilizzare le actions, hai bisogno di:
- Una chiave API Archyl — Vai su Profile > API Keys e creane una con scope di scrittura
- Un Project ID — Disponibile nell'URL o nella pagina impostazioni del progetto
- Salva la chiave API come segreto GitHub: Settings > Secrets > Actions >
ARCHYL_API_KEY - Opzionalmente salva l'ID del progetto come variabile: Settings > Variables > Actions >
ARCHYL_PROJECT_ID
Action Conformance Check
Esegue le tue regole di conformita ad ogni pull request e segnala le violazioni come commenti PR e stati del commit.
Configurazione 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 }}
Come funziona
- L'action raccoglie tutti i file modificati nel PR
- Il contenuto dei file viene recuperato allo SHA head
- File + contenuti vengono inviati all'API Archyl per la valutazione
- Tutte le regole di conformita abilitate vengono valutate sui file modificati
- Viene pubblicato uno stato del commit (superato/fallito)
- Viene pubblicato un commento PR con i dettagli delle violazioni
- Il workflow fallisce se vengono trovate violazioni critiche o alte
Commento PR
Quando vengono trovate violazioni, Archyl pubblica un commento come questo:
Archyl Conformance Check — Failed
12 file analizzati — 3 violazione/i trovata/e.
Severita Conteggio Critical 1 High 2
Il commento viene aggiornato nei push successivi — non crea commenti duplicati.
Input
| Input | Richiesto | Default | Descrizione |
|---|---|---|---|
api-key |
Si | — | Chiave API Archyl con scope di scrittura |
project-id |
Si | — | UUID del progetto Archyl |
api-url |
No | https://api.archyl.com/api/v1 |
URL API personalizzato (per self-hosted) |
fail-on-violations |
No | true |
Far fallire il workflow se vengono trovate violazioni critiche/alte |
comment |
No | true |
Pubblicare un commento PR con i risultati |
Output
| Output | Descrizione |
|---|---|
passed |
true se nessuna violazione critica/alta, false altrimenti |
violations |
Numero totale di violazioni trovate |
critical |
Numero di violazioni critiche |
high |
Numero di violazioni alte |
Utilizzo degli output
Puoi usare gli output nei passaggi successivi:
- 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" # Non fallire, gestire 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
Analizza i file modificati al push sul branch predefinito e crea scoperte in sospeso per mantenere il tuo modello C4 aggiornato.
Configurazione 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 # Richiesto per git diff
- uses: archyl/archyl/.github/actions/incremental-discovery@main
with:
api-key: ${{ secrets.ARCHYL_API_KEY }}
project-id: ${{ vars.ARCHYL_PROJECT_ID }}
Come funziona
- L'action calcola il diff git tra il commit precedente e quello attuale
- Il contenuto dei file modificati viene recuperato allo SHA head
- I file vengono inviati all'API Archyl per l'analisi AI
- Solo i file sorgente vengono analizzati (file di test, codice generato, ecc. vengono saltati)
- I nuovi elementi C4 vengono creati come scoperte in sospeso per la tua revisione
- Gli elementi esistenti vengono automaticamente deduplicati — nessun duplicato
- Viene pubblicato un riepilogo del passaggio con lo stato del job di scoperta
Input
| Input | Richiesto | Default | Descrizione |
|---|---|---|---|
api-key |
Si | — | Chiave API Archyl con scope di scrittura |
project-id |
Si | — | UUID del progetto Archyl |
api-url |
No | https://api.archyl.com/api/v1 |
URL API personalizzato (per self-hosted) |
Output
| Output | Descrizione |
|---|---|
job-id |
L'ID del job di scoperta (per interrogare lo stato via API) |
changed-files |
Numero di file modificati rilevati |
Note importanti
- fetch-depth: 2 e richiesto nel passaggio checkout affinche git possa calcolare il diff
- La scoperta crea elementi in sospeso — non appariranno nel tuo modello C4 finche non li approvi
- Solo i file sorgente vengono analizzati (
.go,.ts,.py,.java, ecc.) — file di config, docs e asset vengono saltati - L'action funziona sia con eventi
pushchepull_request
Workflow combinato
La configurazione consigliata usa entrambe le actions insieme — conformita sui PR, scoperta sui merge:
# .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 }}
Questo ti offre un ciclo completo di governance architetturale:
- Uno sviluppatore apre un PR
- Le regole di conformita validano le modifiche contro la tua architettura
- Le violazioni vengono segnalate come commenti PR
- Una volta approvato e unito, la scoperta incrementale aggiorna il modello C4
- Il modello e sempre aggiornato per la prossima verifica PR
Archyl self-hosted
Se esegui Archyl on-premise, imposta l'input api-url alla tua istanza:
- 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 Webhook
Se preferisci i webhook alle GitHub Actions, puoi configurare webhook push/PR direttamente nelle impostazioni del progetto. Vedi Webhooks per i dettagli.
L'approccio webhook:
- Non richiede configurazione GitHub Action
- Usa il token OAuth del proprietario del progetto per l'accesso API
- Supporta GitHub e GitLab
- Si esegue sull'infrastruttura di Archyl (nessun minuto GitHub Action utilizzato)
L'approccio GitHub Action:
- Usa la tua chiave API (piu esplicito)
- Si esegue sull'infrastruttura di GitHub
- Piu facile da personalizzare (aggiungere condizioni, filtrare percorsi, combinare con altri passaggi)
- Funziona con qualsiasi provider Git che supporta GitHub Actions