Intégration GitHub Actions

Archyl fournit six GitHub Actions officielles qui intègrent la gouvernance architecturale directement dans votre pipeline CI/CD.
| Action | Déclencheur | Objectif |
|---|---|---|
| Conformance Check | Pull requests | Valider les modifications de code par rapport à vos règles d'architecture |
| Drift Score | Pull requests | Calculer le score de dérive et appliquer un seuil de qualité |
| Generate Context | Push sur main | Générer archyl.txt pour les agents IA |
| Auto CR | Push sur main | Créer des demandes de changement d'architecture au merge |
| Release | Push / tags | Suivre les releases dans Archyl |
| Sync | Push sur main | Synchroniser le DSL archyl.yaml avec Archyl |
Toutes les actions sont publiées sous archyl-com/actions et versionnées avec @v1.
Prérequis
Avant d'utiliser les actions, vous avez besoin de :
- Une clé API Archyl — Allez dans Profil > Clés API et créez-en une avec le scope d'écriture
- Un ID d'organisation — Disponible sur la page des paramètres de votre organisation
- Un ID de projet — Disponible dans l'URL ou sur la page des paramètres de votre projet
- Stockez ces valeurs comme secrets et variables GitHub :
Settings > Secrets > Actions:
ARCHYL_API_KEY # Your API key (secret)
Settings > Variables > Actions:
ARCHYL_ORG_ID # Organization UUID
ARCHYL_PROJECT_ID # Project UUID
Démarrage rapide
Le moyen le plus rapide de démarrer est d'utiliser les workflows réutilisables d'Archyl — un pour les PR, un pour les pushes sur la branche 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 }}
Vous obtenez ainsi une boucle complète de gouvernance architecturale : les règles de conformité valident chaque PR, le score de dérive mesure l'écart entre votre code et le modèle, et au merge le modèle reste synchronisé automatiquement.
Actions individuelles
Conformance Check
Évalue vos règles de conformité sur les fichiers modifiés dans une pull request. Annote les violations directement dans le code et publie un commentaire de synthèse sur la 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 }}
Entrées
| Entrée | Requise | Défaut | Description |
|---|---|---|---|
api-key |
Oui | — | Clé API Archyl avec scope d'écriture |
organization-id |
Oui | — | UUID de l'organisation Archyl |
project-id |
Oui | — | UUID du projet Archyl |
api-url |
Non | https://api.archyl.com |
URL d'API personnalisée (pour une instance auto-hébergée) |
fail-on |
Non | error |
Sévérité minimale qui fait échouer la vérification : error, warning ou none |
comment-on-pr |
Non | true |
Publier un commentaire de synthèse sur la pull request |
github-token |
Non | ${{ github.token }} |
Token GitHub pour les commentaires de PR |
max-file-lines |
Non | 200 |
Nombre maximal de lignes envoyées par fichier (réduit la consommation de tokens) |
chunk-size |
Non | 20 |
Nombre de fichiers envoyés par appel d'API (pour les diffs volumineux) |
Sorties
| Sortie | Description |
|---|---|
check-id |
UUID de la vérification de conformité |
total-violations |
Nombre total de violations trouvées |
errors |
Nombre de violations de niveau erreur |
warnings |
Nombre de violations de niveau avertissement |
infos |
Nombre de violations de niveau information |
status |
Résultat de la vérification : pass ou fail |
Utiliser les sorties
- 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
Calcule le score de dérive architecturale — le degré de correspondance entre votre codebase et votre modèle C4. Peut en option appliquer un seuil de qualité en faisant échouer le build si le score passe sous un seuil donné.
- 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
Entrées
| Entrée | Requise | Défaut | Description |
|---|---|---|---|
api-key |
Oui | — | Clé API Archyl avec scope d'écriture |
organization-id |
Oui | — | UUID de l'organisation Archyl |
project-id |
Oui | — | UUID du projet Archyl |
api-url |
Non | https://api.archyl.com |
URL d'API personnalisée (pour une instance auto-hébergée) |
threshold |
Non | 0 |
Score de dérive minimal acceptable (0-100). Échoue si le score est inférieur. Définissez 0 pour ne jamais échouer. |
poll-interval |
Non | 5 |
Secondes entre deux interrogations du statut pendant le calcul |
poll-timeout |
Non | 300 |
Durée maximale d'attente, en secondes, de la fin du calcul |
comment-on-pr |
Non | false |
Publier un commentaire de synthèse sur la pull request |
github-token |
Non | ${{ github.token }} |
Token GitHub pour les commentaires de PR |
Sorties
| Sortie | Description |
|---|---|
score |
Score de dérive (0-100) |
score-id |
UUID de l'enregistrement du score de dérive |
total-elements |
Nombre total d'éléments comparés |
matched-count |
Nombre d'éléments correspondants |
missing-in-code |
Nombre d'éléments absents du code |
new-in-code |
Nombre de nouveaux éléments trouvés dans le code |
status |
Statut du calcul : completed ou failed |
Generate Context
Génère un fichier archyl.txt contenant votre contexte architectural, optimisé pour les agents IA et les LLM. Peut commiter automatiquement le fichier lorsqu'il change.
- 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'
Entrées
| Entrée | Requise | Défaut | Description |
|---|---|---|---|
api-key |
Oui | — | Clé API Archyl avec scope de lecture |
organization-id |
Oui | — | UUID de l'organisation Archyl |
project-id |
Oui | — | UUID du projet Archyl |
api-url |
Non | https://api.archyl.com |
URL d'API personnalisée (pour une instance auto-hébergée) |
output-file |
Non | archyl.txt |
Chemin où écrire le fichier de contexte généré |
format |
Non | markdown |
Format de sortie : markdown pour un briefing optimisé pour les LLM, full pour du JSON structuré + markdown |
commit |
Non | false |
Commiter automatiquement le fichier généré s'il a changé |
commit-message |
Non | chore: update archyl.txt architecture context |
Message de commit utilisé lors du commit automatique |
Sorties
| Sortie | Description |
|---|---|
file-path |
Chemin du fichier de contexte généré |
changed |
Indique si le contenu du fichier a changé (true ou false) |
token-count |
Nombre approximatif de tokens du fichier généré |
Auto CR
Crée automatiquement une demande de changement d'architecture dans Archyl lorsque du code est mergé sur main. Analyse le diff pour détecter les modifications qui touchent l'architecture et les suit pour relecture.
- 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 }}
Entrées
| Entrée | Requise | Défaut | Description |
|---|---|---|---|
api-key |
Oui | — | Clé API Archyl avec scope d'écriture |
organization-id |
Oui | — | UUID de l'organisation Archyl |
project-id |
Oui | — | UUID du projet Archyl |
api-url |
Non | https://api.archyl.com |
URL d'API personnalisée (pour une instance auto-hébergée) |
github-token |
Non | ${{ github.token }} |
Token GitHub pour les commentaires de commit et l'accès au diff |
base-ref |
Non | (détectée automatiquement) | Référence de base pour la comparaison |
comment-on-commit |
Non | false |
Publier sur le commit de merge un commentaire contenant le lien vers la demande de changement |
Sorties
| Sortie | Description |
|---|---|
request-id |
UUID de la demande de changement créée |
changes-detected |
Nombre de modifications touchant l'architecture trouvées |
status |
created, skipped (aucune modification) ou failed |
Release
Crée ou met à jour une release dans Archyl depuis votre pipeline CI. Suivez vos déploiements, associez-les à des environnements et à des éléments C4, et alimentez vos métriques DORA.
- uses: archyl-com/actions/release@v1
with:
api-key: ${{ secrets.ARCHYL_API_KEY }}
project-id: ${{ vars.ARCHYL_PROJECT_ID }}
status: deployed
environment: production
Entrées
| Entrée | Requise | Défaut | Description |
|---|---|---|---|
api-key |
Oui | — | Clé API Archyl avec scope d'écriture |
project-id |
Oui | — | UUID du projet Archyl |
api-url |
Non | https://api.archyl.com |
URL d'API personnalisée (pour une instance auto-hébergée) |
version |
Non | $GITHUB_REF_NAME |
Version de la release |
status |
Non | deployed |
Statut de la release : planned, in_progress, deployed, rolled_back, failed |
changelog |
Non | — | Changelog ou description de la release |
environment |
Non | — | Nom de l'environnement cible (par ex. production, staging). Créé automatiquement s'il n'existe pas. |
container-id |
Non | — | UUID du conteneur Archyl à associer à cette release |
system-id |
Non | — | UUID du système Archyl à associer à cette release |
source-url |
Non | — | URL vers la source (commit, page de release, etc.) |
Sorties
| Sortie | Description |
|---|---|
release-id |
UUID de la release créée ou mise à jour |
Sync
Synchronise votre fichier DSL archyl.yaml avec Archyl. Déclarez votre architecture sous forme de code et poussez les modifications à chaque commit.
- uses: archyl-com/actions/sync@v1
with:
api-key: ${{ secrets.ARCHYL_API_KEY }}
project-id: ${{ vars.ARCHYL_PROJECT_ID }}
Entrées
| Entrée | Requise | Défaut | Description |
|---|---|---|---|
api-key |
Oui | — | Clé API Archyl avec scope d'écriture |
project-id |
Oui | — | UUID du projet Archyl |
api-url |
Non | https://api.archyl.com |
URL d'API personnalisée (pour une instance auto-hébergée) |
file |
Non | archyl.yaml |
Chemin du fichier archyl.yaml, relatif à la racine du dépôt |
Sorties
| Sortie | Description |
|---|---|
systems-created |
Nombre de systèmes créés |
containers-created |
Nombre de conteneurs créés |
components-created |
Nombre de composants créés |
relationships-created |
Nombre de relations créées |
summary |
Résumé lisible du résultat de la synchronisation |
Workflows réutilisables
Archyl fournit deux workflows réutilisables qui combinent plusieurs actions pour les scénarios courants.
archyl-pr.yml
Exécute la vérification de conformité et le score de dérive en parallèle sur chaque 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 }}
Toutes les entrées sont optionnelles sauf organization-id, project-id et api-key.
archyl-main.yml
Exécute generate-context, sync et release lors d'un push sur main. Chaque job peut être activé ou désactivé indépendamment.
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 }}
Autres plateformes CI
GitLab CI
Archyl fournit un template CI à inclure pour GitLab. Il exécute la vérification de conformité et le score de dérive sur les merge requests, et génère le contexte lors des pushes sur la branche par défaut.
Configuration :
Ajoutez les variables CI/CD requises dans Settings > CI/CD > Variables :
ARCHYL_API_KEY(masquée, protégée)ARCHYL_ORG_IDARCHYL_PROJECT_ID
Incluez le template dans votre
.gitlab-ci.yml:
include:
- remote: 'https://raw.githubusercontent.com/archyl-com/actions/main/ci-templates/gitlab/.archyl-ci.yml'
Cela ajoute trois jobs à votre pipeline :
archyl:conformance— s'exécute sur les merge requestsarchyl:drift-score— s'exécute sur les merge requestsarchyl:generate-context— s'exécute lors des pushes sur la branche par défaut
Variables optionnelles : ARCHYL_API_URL, ARCHYL_DRIFT_THRESHOLD.
Bitbucket Pipelines
Copiez le template de pipelines Archyl dans votre bitbucket-pipelines.yml.
Configuration :
Ajoutez les variables de dépôt requises dans Settings > Repository variables :
ARCHYL_API_KEY(sécurisée)ARCHYL_ORG_IDARCHYL_PROJECT_ID
Ajoutez les étapes du 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
Le template complet est disponible sur archyl-com/actions/ci-templates/bitbucket/archyl-pipelines.yml.
Exemple combiné
Un workflow complet qui utilise les six actions ensemble :
# .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 }}
Consulter les résultats
Les résultats de toutes les vérifications déclenchées par la CI apparaissent dans Archyl :
- Vérifications de conformité — visibles dans le tableau de bord de conformité (onglet Hub Agent > Tableau de bord). Cliquez sur une vérification pour voir ses violations regroupées par fichier.
- Scores de dérive — visibles dans la section Dérive de votre projet. Suivez l'évolution du score dans le temps.
- Demandes de changement — visibles dans la section Requêtes. Relisez les modifications d'architecture avant de les accepter.
- Releases — visibles dans la section Releases et sur la page Environnements. Alimentent vos métriques DORA.
- Résultats de synchronisation — reflétés immédiatement dans votre modèle C4.
Consultez Règles de conformité pour plus de détails sur le tableau de bord de conformité.
Archyl auto-hébergé
Si vous exécutez Archyl sur site, définissez l'entrée api-url de n'importe quelle action pour pointer vers votre instance :
- 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"
La valeur par défaut est https://api.archyl.com pour toutes les actions.