דלגו לתוכן

מעקב אחר הרצות פייפליין

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

  1. לחצו על פייפליינים בסרגל הצד של סביבת העבודה. המסך הזה הוא תור ההרצות של סביבת העבודה — כל הרצה, מהחדשה לישנה.
  2. השתמשו במסילה השמאלית כדי לסנן. יש בדיוק שלושה מסננים, לכל אחד מונה חי: הכול, פועל, נכשל.
  3. עברו על הטבלה עם ↑/↓ (או j/k) ולחצו על Enter כדי לפתוח את ההרצה שבמיקוד. לחיצה על שורה עושה את אותו הדבר.

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

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

לדף של הרצה יש שלושה חלקים זה מעל זה.

רצועת המטא נושאת את זמן ההתחלה, משך הפעילות, התקדמות השלבים (“3 מתוך 7 שלבים”), תקציר כשל שמציין את השלב שנשבר ולמה, ואת הפעולות נסה שוב ומחיקה.

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

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

סטטוסים של הרצות ושלבים

קטע בשם “סטטוסים של הרצות ושלבים”
סטטוס משמעות
ממתין נוצר, טרם התחיל
בתור התקבל אך מוחזק: תקרת המקביליות המרבית של התבנית הזו מלאה; אין עדיין שורות שלבים
פועל מתבצע
מושהה ממתין למשהו חיצוני — תקין, לא תקוע
הושלם הסתיים בהצלחה
נכשל הסתיים בשגיאה
בוטל נעצר על ידי משתמש או על ידי המערכת

לשלבים יש אותם סטטוסים בלי בתור, ובנוסף דולג, עבור ענף ש-router לא לקח (וצאצאיו שכבר אינם ניתנים להגעה).

מושהה הוא המצב שבו שלב סוכן מבלה את רוב חייו: סוכן שנשלח או שער אישור מחזיקים את השלב עד שעבודתו מגיעה. שני מנגנוני רשת ביטחון של המנוע מכשילים את ההרצה כולה במקום לחדש אותה: שלב שמושהה יותר מ-24 שעות (extras.awaitApproval — גוף orchestration.awaitApproval — פטור; human.gate אינו פטור) ושלב שאינו אידמפוטנטי שהיה באמצע ריצה כשהשרת נעצר.

בחרו צומת בקנבס. לוח השלב מציג, לפי הסדר:

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

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

בשלב bash, פלט הוא ה-stdout החתוך שהסקריפט כתב ביציאה עם קוד 0. יציאה עם קוד שאינו אפס מכשילה את השלב, כשזנב ה-stderr הוא הודעת השגיאה.

התאוששות מהרצה שנכשלה

קטע בשם “התאוששות מהרצה שנכשלה”
  1. קראו את תקציר הכשל ברצועת המטא; הוא מציין את השלב שנכשל. תיבת שגיאה בלוח השלב מכילה את ההודעה.
  2. בדקו את קלט השלב — מפתח מצב חסר או שגוי בכתיבו הוא הסיבה הנפוצה ביותר. שלב prompt-agent נכשל מיד ומציין את מחזיקי המקום שלא נפתרו; שלב bash מצייר אותם כמחרוזות ריקות ורץ בכל זאת, מה שבדרך כלל מתגלה שלב אחד אחר כך.
  3. בשלב סוכן, פתחו את הצגת השיחה וקראו מה הסוכן באמת עשה.
  4. לחצו על נסה שוב ברצועת המטא. שלבים שהושלמו ושלבים שדולגו שומרים על הפלטים שלהם; כל השאר נמחק ומורץ מחדש, וההרצה חוזרת לסטטוס פועל. שעון המשך מתאפס לניסיון הזה.

סיבות נפוצות שכדאי לבדוק קודם:

  • פסק זמן — השלב חרג מזמן קצוב (ms) שלו. זכרו שהשדה הוא במילישניות.
  • שגיאת סקריפט — פקודת ה-bash יצאה עם קוד שאינו אפס, או ש-bash אינו ב-PATH של מארח השרת.
  • אימות סכימה — המטען של submit_output מהסוכן לא עמד בסכימת הפלט של השלב.
  • מחזיק מקום שלא נפתר — {{key}} שאליו התייחס שלב prompt-agent מעולם לא נכתב במעלה הזרם. השגיאה מציינת כל מפתח שלא נפתר.
  • גוף לא רשום — שלב שמפתח הגוף שלו אינו רשום מפיק אזהרה בעת טעינת התבנית ואז פשוט לעולם אינו מבוצע.

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

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

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