דלגו לתוכן

יצירת תבנית פייפליין

תבניות פייפליין נכתבות בהגדרות סביבת העבודה. הפריט פייפליינים בסרגל הצד של סביבת העבודה הוא תור ההרצות, ולא רשימת התבניות — אין בו פעולה של “יצירת תבנית”.

לפירוש של כל סוג שלב, מפתח גוף ושדה תצורה, ראו סוגי שלבי פייפליין.

  1. עברו אל הגדרות ← סביבת עבודה ← תבניות פייפליין (/workspaces/<workspace-id>/settings/pipelines).
  2. לחצו על תבנית חדשה.

אין תיבת דו־שיח למזהה. העורך נפתח מיד על שלד מוכן מראש בשם פייפליין חדש, עם מזהה שמוקצה אוטומטית (pipeline_1, ואחריו pipeline_2, …). לחצו על הכותרת בראש העורך כדי לשנות את שמו.

הקנבס אינו ריק: צומת כניסה טריגר, צומת סוכן הנחיה אחד שכותרתו Step וזקיף סופי שמסיים את ההרצה. הזקיף אינו מצויר. העורך מחווט מחדש את הזקיף המוסתר אל כל כיור שאפשר להגיע אליו, כך שעבודה שתלוו אחרי Step עדיין רצה.

סרגל הצד ספריית צמתים יושב דרך קבע משמאל לעורך. סננו אותו בתיבת חיפוש צמתים וגררו פריט אל הקנבס — הצומת נוחת במקום שבו שחררתם אותו, בלי חיבור נכנס.

צומת בפלטה סוג שלב מה הוא עושה
Bash script listen מריץ סקריפט מעטפת עם החלפת {{state}}; לא נשלח סוכן
Open conversation listen פותח את המרחב הגלוי היחיד של ההרצה ואת הצ׳קאאוט שלו; צומתי סוכנים מצטרפים למרחב הזה
Clone PR branch listen מגלה את ענף הראש של ה-PR באמצעות gh pr view ומשבט אותו לתיקיית ההרצה
Post PR comment listen מפרסם את הממצאים המאוחדים ב-PR כהערת סקירה ב-GitHub
Reviewer (prompt) listen שולח סוכן סוקר מתמחה; משהה עד שהסוכן מגיש את תוצאתו
Consolidate (join) join ממתין לכמה ענפים במעלה הזרם, ואז מבקש מסוכן לאחד את הפלטים שלהם
Custom prompt listen צומת כללי מונחה הנחיה, מנותב דרך הגוף promptAgent
Post to space listen שולח הודעה אל מרחב הודעות
Condition / switch (router) router מסתעף את הזרימה לפי ערך מצב
If file exists (router) router מנתב "true" כשנתיב קיים תחת השיבוט, אחרת "false"
Any file exists (OR router) router מנתב "true" כשאחד מהנתיבים ברשימה קיים
All conditions (AND router) router מנתב "true" רק כשכל הנתיבים ברשימה קיימים
Team dispatch listen שולח צוות שלם ומשהה עד שיסיים
Approval gate listen עוצר לצורך החלטת אישור
For each (map) forEach מרנדר הנחיה לכל פריט, ואז שולח את הסוכן פעם אחת כשההנחיות האלה מחוברות זו לזו
Call sub-pipeline listen מריץ תבנית אחרת כשלב מקונן
Clean up worktrees listen מסיר עצי עבודה מבודדים ומיושנים; דטרמיניסטי, לא נשלח סוכן

הספרייה מקבצת אותם תחת זרימה ולוגיקה, סקירת PR, סוכנים, הודעות וקוד. אין קבוצת Demo.

לכל צומת עבודה יש פורט פלט עגול בקצהו הימני. גררו מהפורט הזה אל צומת אחר כדי לחבר ביניהם. טריגרי ההתחלה זהים: לכל אחד פורט משלו, כך שחוט מלוח זמנים אינו יוצא גם מהרצה ידנית. לחצו על הוספת שלב (+) ממש אחרי צומת כדי להוסיף אחריו סוג. רחפו מעל נקודת האמצע של קשת קיימת ולחצו על × כדי לנתק.

אפשר לערוך חיבורים גם מהצומת ש_מקבל_ אותם:

  1. בחרו את הצומת שבמורד הזרם. לוח התצורה שלו נפתח מימין.
  2. גללו אל טריגרים מ־ והקישו על הצ’יפ של כל צומת במעלה הזרם שצומת זה אמור להאזין לו. הקשה על צ’יפ נבחר מסירה את החיבור.
  3. אם צומת במעלה הזרם הוא נתב, מופיע מתחת לצ’יפים אזור מפתחות ניתוב עם שדה מפתח ניתוב מ-<node> אחד לכל קשת של נתב. הזינו את המפתח שהקשת הזו יורה עליו — true או false עבור נתבי קיום הקבצים, או שם המקרה עבור מיתוג.

כל צומת טריגר הוא נקודת כניסה. צומת יכול להאזין לכמה צמתים במעלה הזרם (fan-in) ולהזין כמה צמתים במורד הזרם (fan-out), והגרף חייב להישאר חסר מעגלים — שום דבר בעורך לא עוצר בעדכם מליצור מעגל, אז בדקו את העבודה שלכם.

הזקיף הסופי מסונן מהקנבס, ולכן אי אפשר לבחור בו. העורך מחווט אותו מחדש אל כל כיור שאפשר להגיע אליו בכל פעם שהגרף משתנה, כך שעבודה שתלוו אחרי ה-Step הנזרע עדיין רצה. גרף ריק (טריגר בלי ממשיכי עבודה) מציג את הטריגר עצמו, כך שההרצה מסתיימת מיד.

בחרו צומת כדי לפתוח את לוח התצורה שלו. אילו שדות מופיעים תלוי בגוף של הצומת.

לכל צומת יש תווית, מפתחות קלט (מפתחות מצב מופרדים בפסיקים, הנקראים בזמן ההרצה) ותחת מתקדם — Reducer, זמן קצוב (ms), ניסיונות חוזרים, המשך אם שלב זה נכשל וסכמת פלט (JSON). צמתי listen ו-join יכולים גם להחליף את הסוג שלהם בין השניים.

מוסיף בורר מאגרים לשיבוט (אילו מאגרים של סביבת העבודה לבצע להם צ׳קאאוט; ריק פירושו ללא), שם המרחב, ותיבת סימון פתיחת שיחה בתוכו. כשהתיבה מסומנת, שדה שם השיחה מגדיר את השיחה שאיתה נפתח המרחב. צומתי סוכנים מצטרפים למרחב הזה — הם לא פותחים אחד משלהם.

מוסיף סוכן (איזה סוכן לשלוח), תבנית הנחיה (השתמשו ב-{{key}} כדי להפנות לקלטים או לפלטים של צמתים במעלה הזרם) ומפתח פלט.

זמן קצוב (ms) נמדד ב_מילישניות_, לא בשניות — 900000 הם 15 דקות. הזנת 900 נותנת לשלב 0.9 שניות.

למצב השיחה שצומת סוכן הנחיה רץ בו אין שדה בעורך על צומת הסוכן. הוא נוסע על extras['mode'] (chat, plan או review) בצומת Open conversation שיצר את המרחב (ברירת מחדל review). הגדרה שלו על שלב סוכן מתעלמים ממנה. המפתח מותאם בהתאמה מדויקת: כל איות אחר מתעלמים ממנו בשקט.

מוסיף סקריפט. אין שדות של תיקיית עבודה או של משתני סביבה, מפני ששניהם אינם ניתנים להגדרה:

  • כל שלב bash בהרצה חולק את תיקיית העבודה הנוכחית <cc_root>/pipelines/<runId>/.
  • GITHUB_TOKEN מוזרק ממאגר פרטי הגישה, כך ש-gh ו-git clone https://x-access-token:$GITHUB_TOKEN@… עובדים בלי הגדרה.
  • הסקריפט מופעל כקובץ ההרצה המילולי bash, ולכן bash חייב להיות ב-PATH של מארח השרת. זה שיקול שכדאי לזכור ב-Windows.

נתב מעריך תנאי ומחזיר מפתח ניתוב; המנוע מפעיל רק את הקשת שבמורד הזרם שמפתח הניתוב שלה תואם, ואת שאר הענפים הוא מסמן כדולג.

בחירה בנתב מחליפה את השדה מפתח פלט בעורך התנאי. בחרו אחד מארבעת המצבים שלו:

  • קבצים קיימים — אחד לפחות — מנתב "true" כשאחד מהנתיבים ברשימה קיים.
  • קבצים קיימים — כולם — מנתב "true" רק כשכל הנתיבים ברשימה קיימים.
  • השוואה — משווה ערך מצב מול ערך מילולי.
  • מיתוג — מנתב לפי הערך של מפתח מצב, עם מקרה ברירת מחדל.

לאחר מכן הגדירו את מפתחות הניתוב המתאימים בקשתות היוצאות (ראו חיבור הצמתים זה לזה).

קבוצות בוליאניות and / or / not נתמכות בגוף, אבל אי אפשר לכתוב אותן מהטופס הזה — הן דורשות עץ פרדיקטים כתוב ביד תחת extras.predicate. אוצר המילים המלא של פרדיקטים ואופרטורים נמצא ב סוגי שלבי פייפליין.

אין לו תצורה משלו: הוא ממתין לכל השלבים שלפניו במעלה הזרם.

השער שולח את סוכן המאשר אל שיחה מוסתרת עם הנחיית השער ומשהה את ההרצה. המאשר מבקש את החלטתכם בשיחה ומגיש אותה עם submit_output כ- { "decision": "approved" | "rejected", "reason": "..." }. ההחלטה נוחתת תחת מפתח הפלט (ברירת מחדל approval_decision), כך שנתב מיתוג במורד הזרם יכול להסתעף לפיה.

הגדירו את סוכן למאשר ואת תבנית הנחיה לשאלת השער. השער נפתר דרך submit_output כ-{ "decision": "approved" | "rejected", "reason": "..." }. צמתי Reviewer (prompt) מגישים באותה דרך.

מוסיף מזהה צוות ומצב שיגור. הבורר מציע בדיוק שני מצבים:

  • allParallel — משימה אחת לכל חבר, ומשהה עד שכולם מסיימים.
  • manager — שולח את המוביל, והוא מאציל.

כל ערך אחר שנשמר מתנהג כמו allParallel. הגדירו את Reducer ל-append כדי לאסוף את התוצאה של כל חבר לרשימה תחת מפתח הפלט.

For each ממפה כברירת מחדל מעל מפתח המצב items (extras.iterableKey / extras.itemKey בצומת). הוא מרנדר את ההנחיה שלו פעם אחת לכל פריט ({{item}} כברירת מחדל) ושולח את הסוכן פעם אחת כשההנחיות האלה משורשרות זו לזו. אוסף ריק מסתיים מיד עם רשימה ריקה. זה אינו שיגור מקבילי אחד לכל פריט.

Call sub-pipeline משהה עד שהרצת הבן מגיעה למצב סופי, ואז ממזג את המצב הסופי של הבן תחת מפתח הפלט (ברירת מחדל subflow_result). כוונו אותו אל בן באמצעות extras.templateId. תבנית אינה יכולה לקרוא לעצמה; בן שנכשל או בוטל מכשיל את שלב האב, והכישלון הזה כפוף למדיניות הניסיונות החוזרים ולמדיניות ההמשך בעת כשל של אותו שלב.

הצהרת קלטים והתרת הרצות ידניות

קטע בשם “הצהרת קלטים והתרת הרצות ידניות”

שניהם נמצאים מאחורי הרצה ידנית בכותרת העורך.

  1. לחצו על הרצה ידנית.
  2. הפעילו את התרת הרצה ידנית. המתג הזה נשמר מיד — הוא יוצר (או מוחק) את שורת הטריגר manual שמציגה את התבנית בבורר ההרצה.
  3. הגדירו מקסימום הרצות במקביל אם אתם רוצים תקרה (השאירו ריק ללא הגבלה). התחלות נוספות ממתינות במצב queued עד שמתפנה מקום.
  4. לחצו על הוספת קלט עבור כל שדה טופס שהרצה ידנית אמורה לאסוף:
שדה תיאור
מפתח מפתח המצב שהערך נשמר תחתיו; הפנו אליו כ-{{key}}
תווית תווית תצוגה (ברירת מחדל: המפתח)
סוג טקסט, טקסט מרובה שורות, מספר, מתג, בחירה, מאגר
אפשרויות אפשרויות מופרדות בפסיקים, עבור בחירה בלבד
ערך ברירת מחדל ערך שממולא מראש
מציין מקום טקסט רמז בתוך השדה הריק
טקסט עזרה טקסט עזר מתחת לשדה
חובה האם טופס ההרצה נחסם כשיש ערך ריק

קלט מסוג מאגר מציג בורר מעל המאגרים של סביבת העבודה ומאכלס את repo_id, repo_local_path, repo_full_name וגם — כשהמאגר מחזיק remote של GitHub — את repo_owner ו-repo_name במטען ההרצה.

  1. לחצו על שמור בתיבת הדו־שיח. עריכות הקלט נכנסות אל הטיוטה ונשמרות כשתשמרו את התבנית.
  1. לחצו על שמור בכותרת העורך. עד שתעשו זאת, הכותרת מציגה “שינויים שלא נשמרו”.
  2. חזרו אל הגדרות ← סביבת עבודה ← תבניות פייפליין ובדקו שהמתג בשורה של התבנית דלוק. המנוע מסרב להפעיל תבנית מושבתת, ותבנית מושבתת לא מופיעה לעולם בבורר ההרצה.
  3. כדי להפעיל אותה אוטומטית, גררו טריגר מספריית הצמתים אל הקנבס — ראו הגדרת טריגרים לפייפליין.