Créer un modèle de pipeline
Les modèles de pipeline se créent dans les paramètres de l’espace de travail. L’entrée Pipelines de la barre latérale de l’espace de travail est la file d’attente des exécutions, et non la liste des modèles — elle n’offre aucune action « créer un modèle ».
Pour savoir ce que signifient chaque type d’étape, chaque clé de corps et chaque champ de configuration, consultez la référence des étapes de pipeline.
Créer un modèle
Section intitulée “Créer un modèle”- Allez dans Paramètres → Espace de travail → Modèles de pipeline
(
/workspaces/<workspace-id>/settings/pipelines). - Appuyez sur Nouveau modèle.
Il n’y a aucune boîte de dialogue d’identifiant. L’éditeur s’ouvre immédiatement
sur un squelette amorcé nommé Nouveau pipeline, avec un identifiant alloué
automatiquement (pipeline_1, puis pipeline_2, …). Cliquez sur le titre dans
l’en-tête pour le renommer.
Le canevas n’est pas vide : un nœud d’entrée Déclencheur, un nœud d’agent de prompt étiqueté Step et une sentinelle terminale qui met fin à l’exécution. La sentinelle n’est pas dessinée. L’éditeur relie ce terminal masqué à chaque puits atteignable, de sorte que le travail que vous rattachez après Step s’exécute quand même.
Ajouter des nœuds
Section intitulée “Ajouter des nœuds”La barre latérale Bibliothèque de nœuds est toujours à gauche de l’éditeur. Filtrez-la avec la zone Rechercher des nœuds et glissez une entrée sur le canevas — le nœud se dépose là où vous le relâchez, sans connexion entrante.
| Nœud de la palette | Type d’étape | Ce qu’il fait |
|---|---|---|
| Bash script | listen | Exécute un script shell avec substitution de {{state}}; aucun agent lancé |
| Open conversation | listen | Ouvre l’unique espace visible de l’exécution et sa copie de travail; les nœuds d’agent rejoignent ce salon |
| Clone PR branch | listen | Découvre la branche de tête de la PR au moyen de gh pr view et la clone dans le répertoire de l’exécution |
| Post PR comment | listen | Publie les constats consolidés dans la PR sous forme de commentaire de révision GitHub |
| Reviewer (prompt) | listen | Lance un agent relecteur spécialisé; suspend l’étape jusqu’à ce que l’agent soumette son résultat |
| Consolidate (join) | join | Attend plusieurs branches en amont, puis demande à un agent de consolider leurs sorties |
| Custom prompt | listen | Nœud générique piloté par un prompt, acheminé par le corps promptAgent |
| Post to space | listen | Envoie un message dans un salon de messagerie |
| Condition / switch (router) | router | Crée un embranchement selon une valeur d’état |
| If file exists (router) | router | Achemine "true" lorsqu’un chemin existe sous la copie, sinon "false" |
| Any file exists (OR router) | router | Achemine "true" lorsqu’au moins un chemin listé existe |
| All conditions (AND router) | router | Achemine "true" seulement lorsque tous les chemins listés existent |
| Team dispatch | listen | Lance une équipe entière et suspend l’étape jusqu’à ce qu’elle termine |
| Approval gate | listen | Met l’exécution en pause en attendant une décision d’approbation |
| For each (map) | forEach | Génère un prompt par élément, puis lance l’agent une seule fois avec ces prompts réunis |
| Call sub-pipeline | listen | Exécute un autre modèle comme étape imbriquée |
| Clean up worktrees | listen | Supprime les arbres de travail isolés obsolètes; déterministe, aucun agent lancé |
La bibliothèque les regroupe sous Flux et logique, Revue de PR, Agents, Messagerie et Code. Il n’existe aucun groupe Demo.
Relier les nœuds entre eux
Section intitulée “Relier les nœuds entre eux”Chaque nœud de travail a un port de sortie circulaire sur son bord droit.
Glissez depuis ce port vers un autre nœud pour les relier. Les déclencheurs de
départ fonctionnent de la même façon : chacun possède son propre port, de sorte
qu’un fil partant de Calendrier ne quitte pas aussi Exécution manuelle.
Appuyez sur Ajouter une étape (+) juste après un nœud pour insérer un type
à sa suite. Survolez le milieu d’une arête existante et appuyez sur × pour la
déconnecter.
Les connexions se modifient aussi depuis le nœud qui les reçoit :
- Sélectionnez le nœud en aval. Son panneau de configuration s’ouvre à droite.
- Faites défiler jusqu’à Déclencheurs en amont et touchez la puce de chaque nœud amont que celui-ci doit écouter. Toucher une puce sélectionnée supprime la connexion.
- Si un nœud en amont est un routeur, un bloc Clés de route apparaît sous
les puces, avec un champ Clé de route depuis <node> par arête de
routeur. Saisissez la clé sur laquelle cette arête se déclenche —
trueoufalsepour les routeurs de présence de fichier, ou le nom du cas pour un aiguillage.
Chaque nœud déclencheur est un point d’entrée. Un nœud peut écouter plusieurs nœuds en amont (entrées multiples) et en alimenter plusieurs en aval (sorties multiples), et le graphe doit rester acyclique — rien dans l’éditeur ne vous empêche de câbler un cycle, alors vérifiez votre travail.
La sentinelle terminale est filtrée du canevas, de sorte qu’elle ne peut pas être sélectionnée. L’éditeur la relie à chaque puits atteignable dès que le graphe change, de sorte que le travail que vous rattachez après le Step amorcé s’exécute quand même. Un graphe vide (déclencheur sans successeur de travail) liste le déclencheur lui-même pour qu’une exécution se termine immédiatement.
Configurer un nœud
Section intitulée “Configurer un nœud”Sélectionnez un nœud pour ouvrir son panneau de configuration. Les champs affichés dépendent du corps du nœud.
Chaque nœud a Libellé, Clés d’entrée (clés d’état séparées par des virgules, lues au moment de l’exécution) et, sous Avancé, Réducteur, Délai d’expiration (ms), Tentatives de réessai, Continuer en cas d’échec et Schéma de sortie. Les nœuds listen et join peuvent aussi permuter leur Type entre les deux.
Ouvrir une conversation
Section intitulée “Ouvrir une conversation”Ajoute un sélecteur de portée des dépôts (quels dépôts de l’espace de travail cloner; vide signifie aucun), un Nom de l’espace et une case à cocher Y ouvrir une conversation. Lorsque cette case est cochée, un champ Nom de la conversation nomme le fil avec lequel le salon s’ouvre. Les nœuds d’agent rejoignent ce salon — ils n’en ouvrent pas un eux-mêmes.
Agent de prompt
Section intitulée “Agent de prompt”Ajoute Agent (quel agent lancer), Prompt (utilisez {{key}} pour
référencer les entrées ou les sorties en amont) et Clé de sortie.
Délai d’expiration (ms) est en millisecondes, et non en secondes —
900000 correspond à 15 minutes. Saisir 900 donne 0,9 seconde à l’étape.
Le mode de conversation sous lequel s’exécute un nœud d’agent de prompt n’a
aucun champ dans l’éditeur sur le nœud d’agent. Il passe par extras['mode']
(chat, plan ou review) sur le nœud Open conversation qui a créé le
salon (review par défaut). Le définir sur une étape d’agent est ignoré. La clé
exige une correspondance exacte : toute autre graphie est ignorée silencieusement.
Script bash
Section intitulée “Script bash”Ajoute Script. Il n’y a aucun champ de répertoire de travail ni d’environnement, car ni l’un ni l’autre n’est configurable :
- Chaque étape bash d’une exécution partage le répertoire courant
<cc_root>/pipelines/<runId>/. GITHUB_TOKENest injecté depuis le magasin d’identifiants, de sorte queghetgit clone https://x-access-token:$GITHUB_TOKEN@…fonctionnent sans configuration.- Le script est lancé comme exécutable littéral
bash, de sorte quebashdoit se trouver dans lePATHde l’hôte du serveur. C’est une considération Windows.
Routeur
Section intitulée “Routeur”Un routeur évalue une condition et retourne une clé de route; le moteur ne déclenche que l’arête en aval dont la clé de route correspond et marque les autres branches comme ignorées.
Sélectionner un routeur remplace le champ Clé de sortie par l’éditeur de condition. Choisissez l’un de ses quatre modes :
- Fichier(s) présent(s) — au moins un — achemine
"true"lorsqu’au moins un chemin listé existe. - Fichiers présents — tous — achemine
"true"seulement lorsque tous les chemins listés existent. - Comparaison — compare une valeur d’état à une valeur littérale.
- Aiguillage — achemine selon la valeur d’une clé d’état, avec un cas par défaut.
Définissez ensuite les clés de route correspondantes sur les arêtes sortantes (voir Relier les nœuds entre eux).
Les groupes booléens and / or / not sont pris en charge par le corps, mais
ne peuvent pas être créés depuis ce formulaire — ils exigent un arbre de
prédicats écrit à la main sous extras.predicate. Le vocabulaire complet des
prédicats et des opérateurs se trouve dans la
référence des étapes de pipeline.
Jointure
Section intitulée “Jointure”Aucune configuration propre : il attend toutes ses étapes en amont.
Porte d’approbation
Section intitulée “Porte d’approbation”La porte lance l’agent approbateur dans une conversation masquée avec le prompt
de la porte, puis suspend l’étape. L’approbateur sollicite votre décision dans la
conversation et la soumet avec submit_output sous la forme
{ "decision": "approved" | "rejected", "reason": "..." }. La décision est
consignée sous la clé de sortie (approval_decision par défaut), de sorte qu’un
routeur d’aiguillage en aval peut s’y brancher.
Définissez Agent sur l’approbateur et Prompt sur la question de la porte.
La porte se résout par submit_output sous la forme
{ "decision": "approved" | "rejected", "reason": "..." }. Les nœuds Reviewer
(prompt) soumettent de la même façon.
Répartition d’équipe
Section intitulée “Répartition d’équipe”Ajoute ID d’équipe et Mode de répartition. Le sélecteur offre exactement deux modes :
allParallel— une tâche par membre, suspend l’étape jusqu’à ce que toutes soient terminées.manager— lance le responsable, qui délègue.
Toute autre valeur stockée se comporte comme allParallel. Définissez
Réducteur sur append pour recueillir le résultat de chaque membre dans une
liste sous la clé de sortie.
Pour chaque et appel de sous-pipeline
Section intitulée “Pour chaque et appel de sous-pipeline”For each parcourt la clé d’état items par défaut (extras.iterableKey /
extras.itemKey sur le nœud). Il génère son prompt une fois par élément
({{item}} par défaut) et lance l’agent une seule fois avec ces prompts
concaténés. Une collection vide se termine immédiatement avec une liste vide. Il
ne s’agit pas d’un lancement parallèle par élément.
Call sub-pipeline suspend l’étape jusqu’à ce que l’exécution enfant atteigne
un état terminal, puis fusionne l’état final de l’enfant sous la clé de sortie
(subflow_result par défaut). Pointez-le vers un enfant avec
extras.templateId. Un modèle ne peut pas s’appeler lui-même; un enfant en échec
ou annulé fait échouer l’étape parente, qui alimente alors la politique de
nouvelle tentative et de continuation en cas d’échec de cette étape.
Déclarer les entrées et autoriser les exécutions manuelles
Section intitulée “Déclarer les entrées et autoriser les exécutions manuelles”Les deux se trouvent derrière Exécution manuelle dans l’en-tête de l’éditeur.
- Appuyez sur Exécution manuelle.
- Activez Autoriser l’exécution manuelle. Cet interrupteur est enregistré
immédiatement — il crée (ou supprime) la ligne de déclencheur
manualqui fait apparaître le modèle dans le sélecteur d’exécution. - Définissez Exécutions parallèles max si vous voulez un plafond (laissez
vide pour illimité). Les démarrages supplémentaires attendent dans un état
queuedjusqu’à ce qu’une place se libère. - Appuyez sur Ajouter une entrée pour chaque champ de formulaire qu’une exécution manuelle doit recueillir :
| Champ | Description |
|---|---|
| Clé | Clé d’état sous laquelle la valeur est stockée; référencez-la sous la forme {{key}} |
| Libellé | Libellé affiché (par défaut, la clé) |
| Type | Texte, Texte multiligne, Nombre, Bascule, Liste déroulante, Dépôt |
| Options | Choix séparés par des virgules, pour la liste déroulante seulement |
| Valeur par défaut | Valeur préremplie |
| Texte indicatif | Texte d’indication à l’intérieur du champ vide |
| Texte d’aide | Texte auxiliaire sous le champ |
| Obligatoire | Indique si le formulaire d’exécution bloque sur une valeur vide |
Une entrée Dépôt affiche un sélecteur parmi les dépôts de l’espace de travail
et inscrit repo_id, repo_local_path, repo_full_name et — lorsque le dépôt a
un dépôt distant GitHub — repo_owner et repo_name dans la charge utile de
l’exécution.
- Appuyez sur Enregistrer dans la boîte de dialogue. Les modifications d’entrée sont intégrées à l’ébauche; elles sont conservées lorsque vous enregistrez le modèle.
Enregistrer et activer
Section intitulée “Enregistrer et activer”- Appuyez sur Enregistrer dans l’en-tête de l’éditeur. L’en-tête affiche « Modifications non enregistrées » tant que vous ne l’avez pas fait.
- Revenez à Paramètres → Espace de travail → Modèles de pipeline et vérifiez que l’interrupteur de la ligne du modèle est activé. Le moteur refuse de démarrer un modèle désactivé, et un modèle désactivé n’apparaît jamais dans le sélecteur d’exécution.
- Pour le démarrer automatiquement, glissez un déclencheur depuis la bibliothèque de nœuds sur le canevas — voir Configurer des déclencheurs de pipeline.
Guides connexes
Section intitulée “Guides connexes”- Exécuter un pipeline manuellement
- Configurer des déclencheurs de pipeline
- Surveiller les exécutions de pipeline
- Types d’étapes de pipeline