رفتن به محتوا

نظارت بر اجراهای پایپ‌لاین

این صفحه دربارهٔ همه چیز پس از شروع یک اجراست: پیدا کردنش، خواندن اینکه هر گام چه کرد و به راه افتادن دوبارهٔ یک اجرای ناموفق. برای شروع یکی، اجرای دستی یک پایپ‌لاین را ببینید.

  1. در نوار کناری فضای کاری روی پایپ‌لاین‌ها کلیک کنید. این صفحه صف اجراهای فضای کاری است — همهٔ اجراها، تازه‌ترین اول.
  2. برای فیلتر کردن از نوار کناری سمت چپ استفاده کنید. دقیقاً سه فیلتر وجود دارد که هر کدام شمارهٔ زنده‌ای دارند: همه، در حال اجرا، ناموفق.
  3. با ↑/↓ (یا j/k) در جدول حرکت کنید و برای باز کردن اجرای برجسته Enter را بزنید. کلیک روی یک سطر هم همین کار را می‌کند.

هر سطر نمادی برای چگونگی شروع اجرا نشان می‌دهد (نماد پخش برای اجرای دستی؛ نماد فایل برای یک واچ گراف کد؛ در غیر این صورت تریگر خودکار). راهنمای ابزار نام تریگر را می‌گوید — دستی، PR منتشر شد، تغییر فایل و غیره — و برای یک اجرای واچ، اینکه کدام فایل‌ها تغییر کرده‌اند. سپس نام پایپ‌لاین، یک نشان وضعیت، مدت فعال (یا جایگاه در صف برای یک اجرای queued) و اینکه این تلاش چند وقت پیش شروع شده است. مدت فعال فاصله‌های بیکاری میان توقف و راه‌اندازی دوباره را کنار می‌گذارد، پس با زمان واقعیِ سپری‌شده یکی نیست.

فیلتری برای اجراهای کامل‌شده، معلق یا لغوشده وجود ندارد؛ نه فیلتری برای هر قالب، نه پنجرهٔ زمانی و نه نمای تاریخچهٔ اجرای هر قالب. مقایسهٔ اجراهای یک قالب یعنی گشتن صف به دنبال نامش.

صفحهٔ یک اجرا سه بخش روی هم دارد.

نوار فراداده زمان شروع، مدت فعال، پیشرفت گام‌ها («۳ از ۷ گام»)، خلاصهٔ خطایی که گام شکسته و دلیل آن را نام می‌برد و کنش‌های تلاش مجدد و حذف را حمل می‌کند.

آبشار زمان‌بندی برای هر گام یک میله می‌دهد، همراه با مدت آن و — برای گام‌های عامل — هزینه‌اش به سنت. گامی که دوباره تلاش شده باشد، پسوند ×N را بعد از مدت خود نشان می‌دهد؛ همان پسوند تنها جایی است که شمار تلاش‌ها پدیدار می‌شود.

بوم گراف قالب را با وضعیت زندهٔ هر گره رسم می‌کند. انتخاب یک گره، پنل گام آن را باز می‌کند.

وضعیت معنا
در انتظار ساخته شده، هنوز شروع نشده
در صف پذیرفته اما نگه داشته شده: سقف اجرای موازی این قالب پر است؛ هنوز سطری برای گام‌ها نیست
در حال اجرا در حال اجراست
معلق منتظر چیزی بیرونی است — طبیعی، نه گیرکرده
کامل‌شده با موفقیت تمام شد
ناموفق با خطا پایان یافت
لغوشده به دست کاربر یا سیستم متوقف شد

گام‌ها همان وضعیت‌ها را دارند منهای در صف، به‌علاوهٔ ردشده برای شاخه‌ای که یک router برنداشته است (و فرزندانش که اکنون دست‌نیافتنی‌اند).

معلق همان جایی است که یک گام عامل بیشتر عمرش را در آن می‌گذراند: یک عامل اعزام‌شده یا یک دروازهٔ تأیید، گام را تا رسیدن کارش نگه می‌دارد. دو پشتوانهٔ ایمنیِ موتور کل اجرا را ناموفق می‌کنند به‌جای ازسرگیری: گامی که بیش از ۲۴ ساعت معلق مانده باشد (extras.awaitApproval — یعنی بدنهٔ orchestration.awaitApproval — مستثناست؛ human.gate مستثنا نیست) و گامی که ایدِمپوتنت نیست و هنگام توقف سرور در میانهٔ کار بوده است.

یک گره روی بوم انتخاب کنید. پنل گام به ترتیب این‌ها را نشان می‌دهد:

  • یک کادر خطا وقتی گام ناموفق شده، یا یک کادر ردشده همراه با دلیلش وقتی رد شده است.
  • شروع‌شده، تمام‌شده و مدت.
  • شاخه — اندیس شاخه، برای شاخه‌های موازی.
  • نمایش گفتگو — به گفتگویی می‌پرد که گام در آن اجرا شده است. گفتگوهای پایپ‌لاین از نوار کناری پنهان‌اند، پس این تنها راه ورود است.
  • ورودی و خروجی، به‌صورت JSON تاشو.
  • فعالیت عامل — یک کاشی برای هر اجرای عاملی که گام اعزام کرده، با وضعیت، خلاصه، مدت و هزینه‌اش.

برای یک گام عامل، خروجی همان بار دادهٔ ساخت‌یافته‌ای است که عامل با submit_output فرستاده، نه متن آزادی که نوشته است. ردِّ استدلال در فعالیت عامل و در گفتگوی پشت نمایش گفتگو قرار دارد.

برای یک گام bash، خروجی همان stdout پیرایش‌شده است که اسکریپت هنگام خروج با کد 0 نوشته است. خروج با کد غیرصفر گام را ناموفق می‌کند و انتهای stderr به‌عنوان پیام خطا می‌آید.

  1. خلاصهٔ خطا را روی نوار فراداده بخوانید؛ نام گام ناموفق را می‌گوید. کادر خطا در پنل گام پیام را دارد.
  2. ورودی گام را بررسی کنید — کلید حالتِ گم‌شده یا غلط‌املاشده رایج‌ترین علت است. یک گام عامل پرامپتی بی‌درنگ ناموفق می‌شود و نگه‌دارهای حل‌نشده را نام می‌برد؛ یک گام bash آن‌ها را به‌صورت رشته‌های خالی جایگزین می‌کند و به‌هرحال اجرا می‌شود، که معمولاً خودش را یک گام بعد نشان می‌دهد.
  3. برای یک گام عامل، نمایش گفتگو را باز کنید و بخوانید که عامل واقعاً چه کرده است.
  4. روی نوار فراداده تلاش مجدد را بزنید. گام‌های کامل‌شده و ردشده خروجی‌هایشان را نگه می‌دارند؛ هر چیز دیگری حذف و دوباره اجرا می‌شود و اجرا به وضعیت در حال اجرا برمی‌گردد. ساعت مدت برای این تلاش از نو شروع می‌شود.

علت‌های رایجی که ارزش دارد اول بررسی شوند:

  • مهلت — گام از مهلت (ms) خود فراتر رفته است. یادتان باشد این فیلد میلی‌ثانیه است.
  • خطای اسکریپت — دستور bash با کد غیرصفر خارج شده، یا bash روی PATH میزبان سرور نیست.
  • اعتبارسنجی شِما — بار دادهٔ submit_output عامل، شِمای خروجی گام را برآورده نکرده است.
  • نگه‌دار حل‌نشده — یک {{key}} که یک گام عامل پرامپتی به آن ارجاع داده بوده، هرگز بالادست نوشته نشده است. خطا هر کلید حل‌نشده را نام می‌برد.
  • بدنهٔ ثبت‌نشده — گامی که کلید بدنه‌اش ثبت نشده باشد، هنگام بارگذاری قالب هشدار می‌دهد و بعد به‌سادگی هرگز اجرا نمی‌شود.

گام در حال اجرا را انتخاب کنید و دکمهٔ کشتن در حال اجرا را در سرصفحهٔ پنل گام بزنید. این کار فرایند گام را می‌کشد، گام را ناموفق علامت می‌زند و بنابراین کل اجرا را ناموفق می‌کند — هر شاخهٔ خواهرِ باز همراه آن بسته می‌شود.

در این صفحه هیچ کنترل لغو اجرا وجود ندارد. pipeline.cancel به‌عنوان یک عملیات RPC وجود دارد و موتور آن را پیاده کرده، اما هیچ‌چیز در رابط کاربری پایپ‌لاین‌ها آن را صدا نمی‌زند؛ کشتن در حال اجرا روی یک گام، یا حذف روی اجرا، تنها حرکت‌های توقفی در دسترس‌اند.

هزینه به‌ازای هر گام گزارش می‌شود: در ستون سمت راست آبشار و روی هر کاشی زیر فعالیت عامل. در صفحهٔ جزئیات جمع کل اجرا وجود ندارد و در صف اجراها ستون هزینه‌ای نیست، پس مقایسهٔ هزینهٔ دو اجرا یعنی جمع زدن گام‌هایشان.