Scrydon

Sources de packs

Synchronisez automatiquement des packs depuis vos propres dépôts Git et registres OCI vers votre installation Scrydon.

Les sources de packs permettent à vos développeurs de pousser des packs vers une infrastructure qu'ils contrôlent déjà — un dépôt Git ou un registre OCI — et que votre installation Scrydon les récupère automatiquement selon un calendrier. Aucun trafic entrant, aucun téléversement manuel à chaque version.

Quand utiliser les sources de packs plutôt que le téléversement manuel

Utilisez les sources de packs lorsque vous avez des développeurs qui poussent des mises à jour de packs depuis la CI et souhaitent que ces mises à jour arrivent dans Scrydon sans qu'un administrateur effectue un téléversement manuel à chaque version. Utilisez le téléversement manuel pour les tests ponctuels, les environnements isolés (air-gapped) ou les packs sans étape de publication automatisée.

Fonctionnement

Votre installation Scrydon exécute un réconciliateur qui interroge chaque source enregistrée selon un intervalle configurable (5 minutes par défaut, minimum 30 secondes). À chaque cycle, il :

  1. Récupère le fichier catalogue scrydon.yaml depuis votre source.
  2. Le compare aux versions précédemment installées.
  3. Pour chaque entrée nouvelle ou modifiée : récupère l'artefact, vérifie sa signature et l'installe via le même pipeline qu'un téléversement manuel.
  4. Enregistre le résultat — succès ou raison d'échec détaillée — dans l'historique des exécutions de la source.

Le réconciliateur fonctionne en mode pull uniquement. Votre pipeline CI n'a jamais besoin d'un accès entrant vers votre cluster Scrydon.

Le catalogue source fait autorité

Le fichier catalogue scrydon.yaml est la source de vérité pour les packs présents dans le catalogue de votre organisation. Si un administrateur retire de l'interface un pack géré par une source, la prochaine synchronisation le restaure tant qu'il est encore listé dans scrydon.yaml — de la même façon que re-téléverser un pack retraité manuellement le ramène. Pour supprimer définitivement un pack géré par une source :

  • supprimez son entrée du scrydon.yaml de la source, ou
  • désactivez (ou supprimez) la source elle-même.

Le retrait reste utile pour les packs téléversés manuellement (aucune source ne les gère, ils restent donc retirés) et comme masquage temporaire pour les packs gérés par une source entre deux synchronisations.

Choisir un type de source

Type de sourceIdéal pour
GitLes équipes qui versionnent directement le contenu des packs dans un dépôt Git et ne souhaitent pas gérer un registre de conteneurs
OCILes équipes qui publient les artefacts de packs sous forme d'images OCI (par ex. vers GHCR) dans le cadre de leur pipeline de publication

Vous pouvez enregistrer plusieurs sources de chaque type par organisation.

Le fichier catalogue scrydon.yaml

Chaque source est décrite par un unique fichier scrydon.yaml situé à un chemin configurable dans votre dépôt ou registre. Ce fichier est la source de vérité pour les packs à installer et leur version.

apiVersion: scrydon.io/v1
kind: PackCatalog
packs:
  - id: example.sample
    version: 1.0.0
    artifact:
      kind: git-tar
      ref: main
      path: packs/sample
    signature:
      kind: none

  - id: example.fraud
    version: 1.2.0
    artifact:
      kind: oci
      ref: ghcr.io/example/scrydon-fraud@sha256:abc123def456...
    signature:
      kind: cosign-keyless
      certificateIdentityRegexp: "https://github.com/example/.*"
      certificateOidcIssuer: "https://token.actions.githubusercontent.com"

Champs du catalogue de packs

ChampRequisDescription
idOuiIdentifiant unique du pack, en minuscules avec des points (par ex. acme.fraud). Combiné avec version, il identifie une installation de pack.
versionOuiChaîne semver. Le réconciliateur se base sur ce champ — une version n'est prise en compte que lorsque cette entrée est incrémentée, même si pack.json et les artefacts ont changé. Voir Versionnage des packs pour la liste de contrôle complète des versions.
artifact.kindOuigit-tar ou oci.
artifact.refOuiPour git-tar : la branche, le tag ou la référence de commit à extraire. Pour oci : la référence d'image complète — préférez les digests @sha256:… aux tags mutables.
artifact.pathgit-tar uniquementSous-répertoire dans le dépôt à empaqueter.
signature.kindOuicosign-keyless, cosign-key ou none.

Les clés inconnues dans scrydon.yaml sont rejetées. Les fautes de frappe dans les noms de champs provoquent une erreur parse_failed — vérifiez l'historique des exécutions de la source pour les détails.

Publication depuis la CI

Organisation d'une source Git

Pour une source Git, votre dépôt contient le catalogue scrydon.yaml aux côtés de vos répertoires de packs. Le réconciliateur emballe le sous-répertoire déclaré à la référence configurée dans un fichier .scrydon-pack.tar.gz à la volée.

Organisation minimale :

my-packs/
├── scrydon.yaml          # Catalogue de packs
├── packs/
│   └── fraud/            # Répertoire du pack — chacun contient un pack.json
│       ├── pack.json
│       └── ontology/
│           └── manifest.json
└── .github/
    └── workflows/
        └── validate.yml  # Valide scrydon.yaml à chaque PR

Validez scrydon.yaml sur les pull requests pour détecter les erreurs de catalogue avant qu'elles n'atteignent votre installation Scrydon :

# .github/workflows/validate.yml
name: validate-catalog
on:
  pull_request:
    paths: ['scrydon.yaml', 'packs/**']
jobs:
  validate:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - uses: oven-sh/setup-bun@v2
      - name: Validate catalog schema
        run: |
          bunx @scrydon/sdk-authoring sources validate scrydon.yaml

Organisation d'une source OCI

Pour une source OCI, votre pipeline CI construit un fichier .scrydon-pack.tar.gz pour chaque pack, le pousse en tant qu'artefact OCI, le signe avec cosign, et met à jour le catalogue scrydon.yaml (également poussé en tant qu'artefact OCI).

Votre workflow a besoin de cosign pour la signature et de oras pour pousser des artefacts OCI génériques :

- uses: sigstore/cosign-installer@v3
- uses: oras-project/setup-oras@v1
bunx @scrydon/sdk-authoring pack build packs/fraud \
  --out dist/fraud-${{ github.ref_name }}.tar.gz
oras push ghcr.io/${{ github.repository_owner }}/scrydon-fraud:${{ github.ref_name }} \
  --artifact-type application/vnd.scrydon.pack.v1.tar.gzip \
  dist/fraud-${{ github.ref_name }}.tar.gz:application/vnd.scrydon.pack.v1.tar.gzip
COSIGN_EXPERIMENTAL=1 cosign sign --yes \
  ghcr.io/${{ github.repository_owner }}/scrydon-fraud:${{ github.ref_name }}

Aucun secret requis — cosign utilise automatiquement l'OIDC GitHub Actions lorsque la permission id-token: write est accordée.

Résolvez le digest et mettez à jour scrydon.yaml, puis poussez-le avec le tag :catalog :

DIGEST=$(oras manifest fetch --output - \
  ghcr.io/${{ github.repository_owner }}/scrydon-fraud:${{ github.ref_name }} \
  | jq -r '.config.digest // .digest')
sed -i "s|REPLACE_WITH_DIGEST|$DIGEST|" catalog/scrydon.yaml

oras push ghcr.io/${{ github.repository_owner }}/scrydon-catalog:catalog \
  --artifact-type application/vnd.scrydon.catalog.v1+yaml \
  catalog/scrydon.yaml:application/vnd.scrydon.catalog.v1+yaml

Des exemples complets et fonctionnels se trouvent dans le répertoire examples/pack-sources/ du dépôt du SDK Scrydon.

Enregistrer une source via l'interface Paramètres

Accédez à Paramètres > Plateforme > Packs, puis ouvrez l'onglet Sources.

Renseignez les détails de la source :

ChampDescription
NomUn identifiant lisible par l'humain pour cette source (par ex. acme-pack-repo). Doit être unique au sein de votre organisation.
TypeGit ou OCI.
URLPour Git : l'URL de clonage HTTPS de votre dépôt. Pour OCI : la référence de registre (par ex. ghcr.io/acme/scrydon-catalog).
RefBranche/tag Git (par défaut : main) ou tag OCI (par défaut : catalog).
Chemin du catalogueChemin vers scrydon.yaml dans la source (par défaut : scrydon.yaml).
Identifiant d'accèsFacultatif. Pour une source privée, collez l'identifiant directement (PAT Git, PEM de clé de déploiement, ou username:token OCI). Il est enregistré comme un secret d'organisation chiffré et référencé automatiquement. Laissez vide pour les sources publiques. Voir Authentification d'une source privée.
Politique de signatureVoir Politiques de signature ci-dessous.
Intervalle de synchronisationFréquence à laquelle le réconciliateur vérifie les changements (30 secondes–1 jour).

Cliquez sur Tester la connexion pour vérifier que le réconciliateur peut atteindre votre source et analyser scrydon.yaml sans rien persister.

La source est activée immédiatement. La première synchronisation s'exécute dans le premier intervalle.

Pour les installations gérées avec Helm, les sources de packs peuvent également être initialisées via packSources: dans votre fichier de valeurs du chart. Les sources gérées par Helm apparaissent en lecture seule dans l'interface avec une bannière « géré par le chart ». Voir la référence Helm pour le schéma complet.

Authentification d'une source privée

Les dépôts Git privés et les registres OCI privés nécessitent un identifiant. Collez-le directement dans le champ Identifiant d'accès de la source — Scrydon l'enregistre comme un secret d'organisation chiffré et établit la référence automatiquement. Vous n'avez jamais à gérer un secret séparé manuellement.

Dans Identifiant d'accès, saisissez :

  • Git via HTTPS — un jeton d'accès personnel (PAT) avec la portée read sur le dépôt.
  • Git via SSH — une clé privée de déploiement au format PEM (commence par -----BEGIN).
  • OCI — une paire username:token pour le registre.

Cliquez sur Tester la connexion — il utilise l'identifiant que vous venez de saisir (avant que quoi que ce soit ne soit persisté), donc un résultat vert confirme qu'il fonctionne. Lors de l'Enregistrement, l'identifiant est stocké comme un secret d'organisation chiffré (nommé pack-source-<nom>) et la source y fait référence ; chaque synchronisation le résout et le déchiffre automatiquement.

Pour effectuer une rotation, modifiez la source et saisissez une nouvelle valeur (laisser vide conserve la valeur actuelle). Les identifiants enregistrés ne sont plus jamais affichés. Le secret sous-jacent est visible (et gérable) sous Paramètres → Secrets.

Les identifiants sont stockés comme des secrets à portée organisationnelle dans Scrydon (stratégie LOCAL). Les secrets avec KMS externe (BYOK/HYOK) ne sont pas encore utilisés pour les sources de packs — une source se rabat sur un accès anonyme si son identifiant est externe ou manquant.

Livraison d'intégrations personnalisées

Un pack peut inclure une entrée de contenu integration dans son pack.json. Lors de l'installation d'un tel pack, la plateforme enregistre l'intégration personnalisée aux côtés de tout autre type de contenu (ontologie, processus, etc.) — aucune étape de téléversement séparée n'est nécessaire.

La synchronisation place uniquement les packs dans le catalogue de votre organisation — l'installation est une seconde étape explicite. Le marketplace Paramètres → Plateforme → Intégrations → Ajouter une intégration est l'endroit où les intégrations personnalisées sont découvertes et installées pour la première fois. L'onglet Paramètres → Plateforme → Packs → Catalogue permet de suivre l'état d'installation pour tous les types de contenu et d'appliquer les mises à jour.

Dans le marketplace, les intégrations personnalisées synchronisées apparaissent sous Depuis votre catalogue de packs :

  • Pas encore installée — affiche un bouton Ajouter ; cliquer dessus installe et active l'intégration immédiatement.
  • Déjà installée et à jour — affiche un indicateur À jour et reste dans le groupe du catalogue de packs. Cliquer sur la carte ouvre la vue de configuration du fournisseur.
  • Mise à jour disponible — affiche un badge Mise à jour. Cliquer sur l'action renvoie directement vers Paramètres → Plateforme → Packs pour examiner l'impact sur les workflows et appliquer la mise à jour. Voir Gestion des versions de packs.

L'installation d'un pack entier (y compris ses types de contenu non-intégration tels que l'ontologie, les workflows et les sources de données) se fait via l'action Installer dans Paramètres → Plateforme → Packs → Catalogue.

L'ajout d'une intégration depuis le marketplace l'active immédiatement — l'action explicite de l'administrateur est la révision. La politique de signature contrôle les flux non interactifs :

Déclencheur d'installationStatut d'activation
Installation explicite par un admin (marketplace Ajouter/Mettre à jour, catalogue Installer)Active
Installation non interactive, source cosign-keyless / cosign-keyActive
Installation non interactive, artefact non signéEn attente de révision — approuvez sous Intégrations → Personnalisées

Limite de taille de pack pour les artefacts d'intégration : 8 Mo par bundle.tar.gz. Les intégrations plus volumineuses doivent utiliser le téléversement manuel (50 Mo). Voir le guide de création de packs pour la structure complète des sous-répertoires et la déclaration pack.json.

Politiques de signature

Chaque artefact de pack doit passer la vérification de signature avant d'être installé. La politique de signature est définie par source lors de l'enregistrement.

PolitiqueCas d'usage
cosign-keylessArtefacts signés via l'OIDC GitHub Actions (aucune gestion de clé requise). Spécifiez certificateIdentityRegexp pour ancrer sur un dépôt spécifique et certificateOidcIssuer pour ancrer sur le fournisseur OIDC.
cosign-keyArtefacts signés avec une paire de clés statique. Fournissez la clé publique encodée en PEM.
unsigned-allowedAcceptation explicite pour ignorer les vérifications de signature. Non recommandé en production. Affiche une bannière d'avertissement permanente dans l'interface.

cosign-keyless (recommandé)

signature:
  kind: cosign-keyless
  certificateIdentityRegexp: "https://github.com/acme/scrydon-packs/.*"
  certificateOidcIssuer: "https://token.actions.githubusercontent.com"

Le réconciliateur appelle cosign verify avec ces contraintes. L'émetteur OIDC et l'identité du certificat doivent correspondre exactement — un pack signé dans un dépôt différent ou par un système CI différent échouera à la vérification.

Pour que cela fonctionne, votre workflow de publication doit demander la permission id-token: write et utiliser sigstore/cosign-installer@v3.

cosign-key

signature:
  kind: cosign-key
  publicKey: |
    -----BEGIN PUBLIC KEY-----
    MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAE...
    -----END PUBLIC KEY-----

Générez une paire de clés avec cosign generate-key-pair et collez la clé publique ci-dessus. Conservez la clé privée dans un secret CI (COSIGN_PRIVATE_KEY) et signez avec cosign sign --key env://COSIGN_PRIVATE_KEY.

unsigned-allowed

À utiliser uniquement pour le développement local ou les environnements de laboratoire isolés où l'exécution d'une infrastructure de signature est impraticable. Dans scrydon.yaml, les entrées sous une source unsigned-allowed utilisent signature: { kind: none }.

unsigned-allowed est enregistré comme un événement de sécurité au moment de l'enregistrement. Chaque exécution de synchronisation sous cette politique est également signalée dans le journal d'audit. Ne l'activez pour une source de production qu'après acceptation explicite de votre équipe sécurité.

Dépannage

verify_failed

La vérification de signature a échoué pour un ou plusieurs artefacts de pack.

  • Vérifiez que votre workflow de publication a la permission id-token: write (pour le mode sans clé).
  • Confirmez que certificateIdentityRegexp correspond à l'URL d'exécution GitHub Actions de votre dépôt (par ex. https://github.com/acme/scrydon-packs/.*).
  • Confirmez que certificateOidcIssuer correspond au fournisseur OIDC utilisé par votre CI (https://token.actions.githubusercontent.com pour GitHub Actions).
  • Pour cosign-key : vérifiez que la clé publique dans la configuration de la source correspond à la clé privée utilisée pour signer l'artefact.
  • Vérifiez que le pack a été signé après avoir été poussé dans le registre — signer un tag ou un digest différent de celui référencé dans scrydon.yaml échouera.

fetch_failed

Le réconciliateur n'a pas pu atteindre votre source.

  • Pour les sources Git : vérifiez que l'URL est une URL de clonage HTTPS et que les identifiants (PAT ou clé de déploiement) ont la portée read sur le dépôt.
  • Pour les sources OCI : vérifiez que la référence de registre est correcte et que les identifiants de tirage ont un accès en lecture au dépôt.
  • Vérifiez que la source est accessible depuis le réseau de votre cluster Scrydon. Le réconciliateur effectue des requêtes HTTPS sortantes — assurez-vous que le trafic sortant n'est pas bloqué.
  • Cliquez sur Tester la connexion dans les Paramètres pour obtenir une erreur plus détaillée.

parse_failed

scrydon.yaml a échoué à la validation du schéma.

  • Exécutez le validateur localement : bunx @scrydon/sdk-authoring sources validate scrydon.yaml
  • Causes courantes : clés inconnues (fautes de frappe), champs requis manquants, format d'identifiant de pack invalide (doit être en minuscules avec des points, par ex. acme.fraud), semver invalide, ref d'artefact manquant pour les entrées OCI.
  • Confirmez que le fichier est un YAML valide avant de vérifier le schéma.

install_failed

Le pack a été récupéré et vérifié mais son installation a échoué.

  • L'archive du pack elle-même est peut-être malformée. Testez-la localement : bunx @scrydon/sdk-authoring pack test packs/fraud
  • Vérifiez le détail de l'erreur dans l'historique des exécutions sous Paramètres > Plateforme > Packs > onglet Sources — cliquez sur une ligne de source (ou son action Voir l'historique) pour ouvrir le panneau d'historique — pour l'erreur de validation pack.json spécifique.
  • Confirmez que pack.json package.id correspond au schéma en minuscules avec points et que installOrder correspond aux types dans contents.

La source indique « géré par le chart » et est en lecture seule

Cette source a été initialisée via packSources: dans vos valeurs Helm. Modifiez les valeurs du chart pour la changer — ne créez pas une source dupliquée gérée par l'interface avec le même nom.

La synchronisation s'arrête après des échecs répétés

Après trois exécutions consécutives échouées, le réconciliateur augmente l'intervalle au double de celui configuré (plafonné à une heure). Corrigez l'erreur sous-jacente — le recul se réinitialise automatiquement lors de la prochaine synchronisation réussie. Cliquer sur Synchroniser maintenant dans l'interface réinitialise le compteur immédiatement.

Un pack retraité est revenu / un pack est absent du catalogue

Les packs gérés par une source suivent le catalogue de la source : un pack retraité qui est encore listé dans scrydon.yaml est restauré lors de la prochaine synchronisation (voir Le catalogue source fait autorité). Inversement, si un pack attendu est absent, vérifiez qu'il est listé dans le scrydon.yaml de la source, que la dernière exécution dans l'historique de la source a réussi, et que le toast Synchroniser maintenant l'indique comme installé — l'état retraité/restauré suit ensuite la source automatiquement.

Sur cette page

Sur cette page