رفتن به محتوا

راه‌اندازی تریگرهای پایپ‌لاین

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

  1. به تنظیمات → فضای کاری → قالب‌های پایپ‌لاین بروید.
  2. روی مداد در سطر قالب بزنید تا ویرایشگر باز شود.
  3. یک گرهٔ تریگر روی بوم انتخاب کنید. پنل سمت راست با تنظیمات آن تریگر ظاهر می‌شود. وقتی چیزی انتخاب نشده باشد، پنل پنهان است.

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

تریگر بی‌درنگ درج می‌شود. تریگرهای خودکار جدید غیرفعال شروع می‌کنند تا انداختن کارت پیش از آنکه پیکربندی‌اش کرده باشید، اجرایی را شروع نکند. برای روشن‌کردن آن از کلید فعال در بازرس استفاده کنید، یا برای حذفش نماد سطل زباله را بزنید.

اجرای دستی را بیندازید (یا آن را از کاشی شبح انتخاب کنید) و فعال را در بازرسش روشن کنید. همین است که قالب را در راه‌انداز اجرا نمایان می‌کند. این یک حالت خاص نیست — کلید یک ردیف تریگر معمولی می‌نویسد که نوع رویدادش manual است. بی‌درنگ ماندگار می‌شود؛ چیزی برای ذخیره نیست.

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

این رویدادها یک اجرا را شروع می‌کنند:

برچسب انتخاب‌گر رویداد
PR خارجی باز شد ExternalPrDetected
PR منتشر شد PullRequestPublished
وضعیت PR تغییر کرد PullRequestStatusChanged
PR ادغام شد PrMerged
پیام دریافت شد MessageReceived
تیکت ایجاد شد TicketCreated
وضعیت تیکت تغییر کرد TicketStatusChanged
تیکت تخصیص یافت TicketAssigned
تیکت کامل شد TicketCompleted
تیکت ناموفق شد TicketFailed
تیکت لغو شد TicketCancelled
آستانهٔ بودجه رد شد BudgetThresholdCrossed
مخزن افزوده شد RepoAdded
ضبط جلسه متوقف شد MeetingRecordingStopped
مهارت به‌روزرسانی شد SkillUpdated
فضا حذف شد SpaceDeleted

SpaceDeleted همان چیزی است که پایپ‌لاین داخلی پاک‌سازی worktree به آن گوش می‌دهد: شناسهٔ فضای حذف‌شده را حمل می‌کند، پس اجرا دقیقاً worktreeهای همان فضا را بازپس می‌گیرد، نه اینکه کل فضای کاری را جاروب کند.

برای کلیدهای بار دادهٔ هر رویداد، مرجع رویدادهای دامنه را ببینید.

گرهٔ وضعیت PR تغییر کرد را انتخاب کنید. تراشه‌های وضعیت در بازرس، تنها فیلتری هستند که رابط کاربری می‌تواند بسازد. روی هر یک از merged، closed، approved، opened، reopened بزنید؛ آن‌گاه تریگر فقط وقتی شروع می‌شود که status رویداد با یکی از آن‌ها بخواند. اگر همهٔ تراشه‌ها انتخاب‌نشده بمانند، یعنی هیچ فیلتری نیست.

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

گرهٔ زمان‌بندی را انتخاب کنید تا ویرایش کنید چه زمانی شروع می‌شود. فیلدهای بازرس همان‌طور که رهایشان می‌کنید ماندگار می‌شوند:

فیلد توضیح
زمان‌بندی (cron یا every:seconds) یک عبارت cron پنج‌فیلدی مانند 0 9 * * 1، یا بازه‌ای مانند every:86400. عدد خالی به every:<n> تبدیل می‌شود.
منطقهٔ زمانی (اختیاری) یک منطقهٔ IANA مانند Europe/Paris. پیش‌فرض UTC است.
روی اجراهای ازدست‌رفته چه کنیم با شروع‌هایی که هنگام خاموش‌بودن سرور از دست رفته‌اند: یک‌بار اجرا هر نوبت ازدست‌رفته را هنگام راه‌اندازی دوباره در یک شروع فرو می‌برد (پیش‌فرض)، رد کردن از نوبت آیندهٔ بعدی ادامه می‌دهد.

خط خلاصهٔ کاشی روی بوم، فاصله را فقط برای شکل every:<seconds> بازگو می‌کند؛ یک عبارت cron تنها به شکل «زمان‌بندی» نمایش داده می‌شود.

انداختن Webhook یک توکن تصادفی ضرب می‌کند. گره را انتخاب کنید تا مسیر POST /webhooks/<token> را از بازرس کپی کنید.

توکن همچنین راز HMAC است: درخواست باید X-Hub-Signature-256: sha256=<hex> را حمل کند، که در آن hex برابر HMAC-SHA256(body, token) است. تحویلی که تأییدش شکست بخورد رد و ثبت می‌شود و قابل پخش دوباره نیست. تکراری‌ها با کلید یکتاسازی خودشان نادیده گرفته می‌شوند.

هر شروع گرهٔ گراف خودش است. کشیدن یک سیم از زمان‌بندی فقط زمان‌بندی را وصل می‌کند؛ اجرای دستی می‌تواند مسیر متفاوتی (برای مثال یک گرهٔ شرط) در پیش بگیرد تا آن‌که به همان کار بپیوندد. یک اجرا از شروعی وارد می‌شود که با نوع رویدادش می‌خواند و زیرگراف‌هایی را که به شروع‌های دیگر تعلق دارند رد می‌کند.

چگونه یک تریگر به یک اجرا می‌رسد

بخش با عنوان “چگونه یک تریگر به یک اجرا می‌رسد”

تریگر فعالی که هم نوع رویداد و هم فیلترش منطبق باشند، اجرایی را با بار دادهٔ رویداد به‌عنوان بار دادهٔ تریگر اجرا شروع می‌کند — همان چیزی است که {{key}} در پرامپت یا اسکریپت یک گام در برابر آن حل می‌شود. رویدادهایی که کلید طبیعی حمل می‌کنند یکتاسازی می‌شوند، پس شروع دوبارهٔ همان رویداد دو اجرا را شروع نمی‌کند.

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

  • دروازه‌گذاری فقط روی مسیر دستی — اجرای دستی را از میان یک گرهٔ شرط سیم‌کشی کنید و زمان‌بندی را مستقیم به کار. هر شروع سیم‌های خودش را دارد.
  • بازبینی هر PR تازه — رویداد PR منتشر شد روی قالب pr_review.
  • پاک‌سازی پس از ادغام — رویداد وضعیت PR تغییر کرد، فیلترشده به merged / closed / approved. قالب داخلی pr_merged_cleanup از قبل همین‌طور گوش می‌دهد، به‌علاوهٔ تیکت کامل/لغو شده، SpaceDeleted و یک زمان‌بندی روزانه که در هر کاشت دوباره به‌زور فعال می‌شود چون جمع‌آوری زباله است.
  • جاروب شبانه — زمان‌بندی 0 2 * * * با یک منطقهٔ زمانی، روی قالبی که نخستین گرهش یک اسکریپت bash است.
  • واکنش به یک سیستم خارجی — یک تریگر وب‌هوک، با این شرط که سیستم فراخواننده بدنهٔ درخواستش را مانند بالا امضا کند.