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 :
- Récupère le fichier catalogue
scrydon.yamldepuis votre source. - Le compare aux versions précédemment installées.
- 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.
- 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.yamlde 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 source | Idéal pour |
|---|---|
| Git | Les équipes qui versionnent directement le contenu des packs dans un dépôt Git et ne souhaitent pas gérer un registre de conteneurs |
| OCI | Les é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
| Champ | Requis | Description |
|---|---|---|
id | Oui | Identifiant unique du pack, en minuscules avec des points (par ex. acme.fraud). Combiné avec version, il identifie une installation de pack. |
version | Oui | Chaî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.kind | Oui | git-tar ou oci. |
artifact.ref | Oui | Pour 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.path | git-tar uniquement | Sous-répertoire dans le dépôt à empaqueter. |
signature.kind | Oui | cosign-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 PRValidez 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.yamlOrganisation 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@v1bunx @scrydon/sdk-authoring pack build packs/fraud \
--out dist/fraud-${{ github.ref_name }}.tar.gzoras 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.gzipCOSIGN_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+yamlDes 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 :
| Champ | Description |
|---|---|
| Nom | Un identifiant lisible par l'humain pour cette source (par ex. acme-pack-repo). Doit être unique au sein de votre organisation. |
| Type | Git ou OCI. |
| URL | Pour 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). |
| Ref | Branche/tag Git (par défaut : main) ou tag OCI (par défaut : catalog). |
| Chemin du catalogue | Chemin vers scrydon.yaml dans la source (par défaut : scrydon.yaml). |
| Identifiant d'accès | Facultatif. 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 signature | Voir Politiques de signature ci-dessous. |
| Intervalle de synchronisation | Fré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
readsur le dépôt. - Git via SSH — une clé privée de déploiement au format PEM (commence par
-----BEGIN). - OCI — une paire
username:tokenpour 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'installation | Statut d'activation |
|---|---|
| Installation explicite par un admin (marketplace Ajouter/Mettre à jour, catalogue Installer) | Active |
Installation non interactive, source cosign-keyless / cosign-key | Active |
| 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.
| Politique | Cas d'usage |
|---|---|
cosign-keyless | Artefacts 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-key | Artefacts signés avec une paire de clés statique. Fournissez la clé publique encodée en PEM. |
unsigned-allowed | Acceptation 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
certificateIdentityRegexpcorrespond à l'URL d'exécution GitHub Actions de votre dépôt (par ex.https://github.com/acme/scrydon-packs/.*). - Confirmez que
certificateOidcIssuercorrespond au fournisseur OIDC utilisé par votre CI (https://token.actions.githubusercontent.compour 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
readsur 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,refd'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.jsonspécifique. - Confirmez que
pack.jsonpackage.idcorrespond au schéma en minuscules avec points et queinstallOrdercorrespond aux types danscontents.
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.