Creează un șablon de pipeline
Șabloanele de pipeline se redactează în setările spațiului de lucru. Intrarea Pipeline-uri din bara laterală a spațiului de lucru este coada de rulare, nu lista de șabloane — nu are nicio acțiune de „creare șablon”.
Pentru ce înseamnă fiecare tip de pas, cheie de corp și câmp de configurare, vezi referința tipurilor de pași din pipeline.
Creează un șablon
Secțiune intitulată „Creează un șablon”- Mergi la Setări → Spațiu de lucru → Șabloane pipeline
(
/workspaces/<workspace-id>/settings/pipelines). - Apasă Șablon nou.
Nu există niciun dialog pentru id. Editorul se deschide imediat pe un schelet
precompletat numit Pipeline nou, cu un id alocat automat (pipeline_1,
apoi pipeline_2, …). Fă clic pe titlul din antet ca să-l redenumești.
Pânza nu este goală: un nod de intrare Trigger, un nod de agent cu prompt etichetat Step și o sentinelă terminală care încheie rularea. Sentinela nu este desenată. Editorul recablează acel terminal ascuns către fiecare destinație accesibilă, așa că munca pe care o atașezi după Step rulează oricum.
Adaugă noduri
Secțiune intitulată „Adaugă noduri”Bara laterală Bibliotecă de noduri stă permanent în partea stângă a editorului. Filtrează-o cu caseta Caută noduri și trage o intrare pe pânză — nodul ajunge exact acolo unde îl lași, fără nicio conexiune de intrare.
| Nod din paletă | Tip de pas | Ce face |
|---|---|---|
| Bash script | listen | Rulează un script shell cu substituție de {{state}}; nu se trimite niciun agent |
| Open conversation | listen | Deschide singurul spațiu vizibil al rulării și checkout-ul lui; nodurile de agent se alătură acestei săli |
| Clone PR branch | listen | Descoperă ramura head a PR-ului prin gh pr view și o clonează în directorul rulării |
| Post PR comment | listen | Publică constatările consolidate pe PR ca un comentariu de revizuire GitHub |
| Reviewer (prompt) | listen | Trimite un agent revizor specialist; suspendă până când agentul își trimite rezultatul |
| Consolidate (join) | join | Așteaptă mai multe ramuri din amonte, apoi cere unui agent să le consolideze ieșirile |
| Custom prompt | listen | Nod generic condus de un prompt, rutat prin corpul promptAgent |
| Post to space | listen | Trimite un mesaj într-un spațiu de mesagerie |
| Condition / switch (router) | router | Ramifică fluxul în funcție de o valoare de stare |
| If file exists (router) | router | Rutează "true" când o cale există în clone, altfel "false" |
| Any file exists (OR router) | router | Rutează "true" când există oricare dintre căile listate |
| All conditions (AND router) | router | Rutează "true" doar când există toate căile listate |
| Team dispatch | listen | Trimite o echipă întreagă și suspendă până când aceasta termină |
| Approval gate | listen | Face o pauză pentru o decizie de aprobare |
| For each (map) | forEach | Redă un prompt pentru fiecare element, apoi trimite agentul o singură dată cu acele prompturi concatenate |
| Call sub-pipeline | listen | Rulează alt șablon ca pas imbricat |
| Clean up worktrees | listen | Elimină worktree-urile izolate învechite; determinist, nu se trimite niciun agent |
Biblioteca le grupează sub Flux și logică, Revizuire PR, Agenți, Mesagerie și Cod. Nu există un grup Demo.
Leagă nodurile între ele
Secțiune intitulată „Leagă nodurile între ele”Fiecare nod de lucru are un port de ieșire circular pe marginea din dreapta.
Trage din acel port pe alt nod ca să le conectezi. Declanșatorii de pornire
funcționează la fel: fiecare își are propriul port, așa că un fir din Program
nu pleacă și din Rulare manuală. Apasă Adaugă pas (+) imediat după un
nod ca să inserezi un tip în urma lui. Treci cu mouse-ul peste mijlocul unei
muchii existente și apasă × ca să o deconectezi.
Conexiunile se editează și din nodul care le primește:
- Selectează nodul din aval. Panoul lui de configurare se deschide în dreapta.
- Derulează până la Triggers from și atinge cipul fiecărui nod din amonte pe care acesta trebuie să-l asculte. Atingerea unui cip selectat elimină conexiunea.
- Dacă un nod din amonte este un router, sub cipuri apare un bloc Chei de
rută cu câte un câmp Cheie de rută de la <nod> pentru fiecare
muchie de router. Introdu cheia pe care se declanșează acea muchie —
truesaufalsepentru routerele de tip „există fișier”, ori numele cazului pentru un switch.
Fiecare nod de declanșare este un punct de intrare. Un nod poate asculta mai multe noduri din amonte (fan-in) și poate alimenta mai multe noduri din aval (fan-out), iar graful trebuie să rămână aciclic — nimic din editor nu te oprește să cablezi un ciclu, așa că verifică-ți munca.
Sentinela terminală este filtrată din pânză, așa că nu poate fi selectată. Editorul o recablează către fiecare destinație accesibilă de fiecare dată când graful se schimbă, așa că munca pe care o atașezi după Step-ul precompletat rulează oricum. Un graf gol (un declanșator fără succesori de lucru) listează declanșatorul însuși, ca o rulare să se încheie imediat.
Configurează un nod
Secțiune intitulată „Configurează un nod”Selectează un nod ca să-i deschizi panoul de configurare. Ce câmpuri apar depinde de corpul nodului.
Fiecare nod are Etichetă, Chei de intrare (chei de stare separate prin virgule, citite la momentul execuției) și, sub Avansat, Reducer, Timeout (ms), Încercări de reîncercare, Continuă dacă acest pas eșuează și Schemă de ieșire. Nodurile listen și join își pot comuta și Tipul între cele două.
Deschide o conversație
Secțiune intitulată „Deschide o conversație”Adaugă un selector de domeniu de depozite (ce depozite ale spațiului de lucru se extrag; gol înseamnă niciunul), un Nume spațiu și o casetă de selectare Deschide o conversație în el. Când caseta este bifată, un câmp Nume conversație denumește fluxul cu care se deschide sala. Nodurile de agent se alătură acestei săli — nu deschid una proprie.
Agent cu prompt
Secțiune intitulată „Agent cu prompt”Adaugă Agent (ce agent se trimite), Prompt (folosește {{key}} pentru a
face referire la intrări sau la ieșiri din amonte) și Cheie de ieșire.
Timeout (ms) este în milisecunde, nu în secunde — 900000 înseamnă 15
minute. Dacă introduci 900, pasul primește 0,9 secunde.
Modul de conversație sub care rulează un nod de agent cu prompt nu are niciun
câmp în editor pe nodul de agent. El călătorește în extras['mode'] (chat,
plan sau review) pe nodul Open conversation care a creat sala (implicit
review). Dacă îl setezi pe un pas de agent, este ignorat. Cheia se potrivește
exact: orice altă scriere este ignorată în silență.
Script Bash
Secțiune intitulată „Script Bash”Adaugă Script Bash. Nu există câmpuri pentru director de lucru sau mediu, pentru că niciunul nu este configurabil:
- Toate nodurile bash dintr-o rulare folosesc același director curent,
<cc_root>/pipelines/<runId>/. GITHUB_TOKENeste injectat din depozitul de credențiale, așa căghșigit clone https://x-access-token:$GITHUB_TOKEN@…funcționează fără configurare.- Scriptul este lansat ca executabilul literal
bash, decibashtrebuie să fie înPATH-ul gazdei serverului. Aceasta este o considerație pentru Windows.
Un router evaluează o condiție și returnează o cheie de rută; motorul declanșează doar muchia din aval a cărei cheie de rută se potrivește și marchează celelalte ramuri ca sărite.
Selectarea unui router înlocuiește câmpul Cheie de ieșire cu editorul de condiții. Alege unul dintre cele patru moduri:
- Fișier(e) există — oricare — rutează
"true"când există oricare dintre căile listate. - Fișierele există — toate — rutează
"true"doar când există toate căile listate. - Comparație — compară o valoare de stare cu un literal.
- Switch — rutează după valoarea unei chei de stare, cu un caz implicit.
Apoi setează cheile de rută corespunzătoare pe muchiile de ieșire (vezi Leagă nodurile între ele).
Grupurile booleene and / or / not sunt acceptate de corp, dar nu pot fi
create din acest formular — au nevoie de un arbore de predicate scris manual
sub extras.predicate. Vocabularul complet de predicate și operatori se află
în referința tipurilor de pași din
pipeline.
Îmbinare
Secțiune intitulată „Îmbinare”Nu are configurare proprie: așteaptă toți pașii săi din amonte.
Poartă de aprobare
Secțiune intitulată „Poartă de aprobare”Poarta trimite agentul aprobator într-o conversație ascunsă, cu promptul porții,
și suspendă. Aprobatorul îți cere decizia în conversație și o trimite cu
submit_output ca { "decision": "approved" | "rejected", "reason": "..." }.
Decizia ajunge sub cheia de ieșire (implicit approval_decision), așa că un
router de tip switch din aval poate ramifica pe baza ei.
Setează Agent pe aprobator și Prompt pe întrebarea porții. Poarta se
rezolvă prin submit_output ca { "decision": "approved" | "rejected", "reason": "..." }. Nodurile Reviewer (prompt) trimit la fel.
Trimitere de echipă
Secțiune intitulată „Trimitere de echipă”Adaugă ID echipă și Mod de dispatch. Selectorul oferă exact două moduri:
allParallel— o sarcină per membru, suspendă până când toate se termină.manager— trimite liderul, care deleagă.
Orice altă valoare stocată se comportă ca allParallel. Setează Reducer pe
append pentru a colecta rezultatul fiecărui membru într-o listă sub cheia de
ieșire.
For each și Call sub-pipeline
Secțiune intitulată „For each și Call sub-pipeline”For each iterează implicit peste cheia de stare items (extras.iterableKey
/ extras.itemKey pe nod). Redă promptul o dată pentru fiecare element
({{item}} implicit) și trimite agentul o singură dată, cu acele prompturi
concatenate. O colecție goală se încheie imediat, cu o listă goală. Nu este o
trimitere paralelă per element.
Call sub-pipeline suspendă până când rularea copil ajunge într-o stare
terminală, apoi fuzionează starea finală a copilului sub cheia de ieșire
(implicit subflow_result). Indică spre un copil cu extras.templateId. Un
șablon nu se poate apela pe sine; un copil eșuat sau anulat face să eșueze
pasul părinte, care alimentează apoi politica de reîncercare și de
continuare-la-eșec a acelui pas.
Declară intrări și permite rulări manuale
Secțiune intitulată „Declară intrări și permite rulări manuale”Ambele se află în spatele butonului Rulare manuală din antetul editorului.
- Apasă Rulare manuală.
- Activează Permite rulare manuală. Acest comutator se salvează imediat —
creează (sau șterge) rândul de declanșator
manualcare face șablonul să apară în lansatorul de rulări. - Setează Max. rulări paralele dacă vrei o limită (lasă gol pentru
nelimitat). Pornirile suplimentare așteaptă într-o stare
queuedpână când se eliberează un loc. - Apasă Adaugă intrare pentru fiecare câmp de formular pe care o rulare manuală ar trebui să îl colecteze:
| Câmp | Descriere |
|---|---|
| Cheie | Cheia de stare sub care se stochează valoarea; fă referire la ea ca {{key}} |
| Etichetă | Eticheta afișată (implicit, cheia) |
| Tip | Text, Text pe mai multe linii, Număr, Comutator, Selectare, Depozit |
| Opțiuni | Alegeri separate prin virgulă, doar pentru Selectare |
| Valoare implicită | Valoare precompletată |
| Placeholder | Text indicativ în interiorul câmpului gol |
| Text de ajutor | Text auxiliar sub câmp |
| Obligatoriu | Dacă formularul de rulare blochează la o valoare goală |
O intrare Depozit afișează un selector peste depozitele spațiului de lucru
și populează repo_id, repo_local_path, repo_full_name și — când depozitul
are un remote GitHub — repo_owner și repo_name în payload-ul rulării.
- Apasă Salvează în dialog. Modificările intrărilor sunt incluse în ciornă; ele persistă când salvezi șablonul.
Salvează și activează
Secțiune intitulată „Salvează și activează”- Apasă Salvează în antetul editorului. Antetul afișează „Modificări nesalvate” până când faci asta.
- Întoarce-te la Setări → Spațiu de lucru → Șabloane pipeline și verifică dacă comutatorul din rândul șablonului este activat. Motorul refuză să pornească un șablon dezactivat, iar un șablon dezactivat nu apare niciodată în lansatorul de rulări.
- Ca să-l pornești automat, trage un declanșator din biblioteca de noduri pe pânză — vezi Configurează trigger-ele pipeline-urilor.
Ghiduri conexe
Secțiune intitulată „Ghiduri conexe”- Rulează un pipeline manual
- Configurează trigger-ele pipeline-urilor
- Monitorizează rulările de pipeline
- Referința tipurilor de pași din pipeline