اتوماسیون درخواست‌های ادغام گیت‌هاب و به‌روزرسانی‌های جیرا از ک…

اتوماسیون درخواست‌های ادغام گیت‌هاب و به‌روزرسانی‌های جیرا از ک…

15 دقیقه مطالعه · منتشر شده ۱۴۰۵/۵/۷

دانلود workflow

فایل JSON آماده import در n8n — credentialها باید در n8n شما تنظیم شوند.

  1. فایل JSON را دانلود کنید.
  2. در n8n: Workflows → Import from File.
  3. Credentialهای هر node را متصل کنید.
  4. workflow را فعال کنید.

شناسه workflow: 7048 · منبع: کاتالوگ Pixori

اتوماسیون درخواست‌های ادغام گیت‌هاب و به‌روزرسانی‌های جیرا از کامیت‌های گیت (چند مخزن)

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

موارد استفاده کلیدی:

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

---

تشریح گردش کار (Workflow Breakdown)

این گردش کار به بلوک‌های منطقی تقسیم شده است که هر کدام مسئول بخشی خاص از فرآیند اتوماسیون هستند.

۱. دریافت ورودی

هدف: دریافت رویدادهای push گیت‌هاب از طریق یک وب‌هوک برای شروع گردش کار.

  • نود (Node): Webhook

* نوع: Webhook (شنونده HTTP)

* پیکربندی: در مسیر /github-push برای درخواست‌های POST ورودی گوش می‌دهد. بدنه خام برای دریافت کامل payload فعال است.

* ورودی: درخواست HTTP POST ورودی از یک وب‌هوک گیت‌هاب.

* خروجی: payload JSON حاوی داده‌های رویداد push گیت‌هاب.

* ملاحظات: برای امنیت، از پیکربندی اسرار وب‌هوک اطمینان حاصل کنید (در اینجا جزئیات آن ذکر نشده است).

* یادداشت چسبان (Sticky Note): "گوش دادن به رویدادهای push گیت‌هاب."

۲. تجزیه پیام کامیت

هدف: استخراج اطلاعات مرتبط از اولین پیام کامیت در یک رویداد push، شامل شناسه تیکت جیرا، دستورات و شاخه پایه هدف.

  • نود (Node): Commit Message Breakdown

* نوع: Code (JavaScript)

پیکربندی: یک بار برای هر آیتم اجرا می‌شود. از یک عبارت منظم (مثلاً ^([A-Z]+-\d+)\s(.?)(?:\s\[(.*)\])?$) برای تجزیه پیام کامیت استفاده می‌کند.

* عملکرد:

* کلید تیکت جیرا (مثلاً PROJ-123) را استخراج می‌کند.

* توضیحات کامیت را ثبت می‌کند.

* پرچم‌های دستور را در داخل براکت‌ها شناسایی می‌کند (مثلاً [auto-pr], [taskcompleted]).

* شاخه پایه هدف را در صورت مشخص شدن استخراج می‌کند.

* در صورت عدم وجود فرمت اجباری یا اطلاعات، خطا ایجاد می‌کند.

* ورودی: payload از نود Webhook.

* خروجی: JSON ساختاریافته حاوی داده‌های تجزیه شده کامیت.

* ملاحظات: اگر فرمت پیام کامیت نادرست باشد یا شاخه پایه مورد نیاز باشد اما با دستور [auto-pr] ارائه نشود، گردش کار متوقف خواهد شد.

* یادداشت چسبان (Sticky Note): "تجزیه پیام کامیت برای کلید جیرا، دستورات و شاخه پایه."

۳. منطق تصمیم‌گیری دستور

هدف: تعیین گام‌های بعدی گردش کار بر اساس وجود دستورات خاص در پیام کامیت.

  • نود (Node): Check for PR commands

* نوع: If

* شرط: بررسی می‌کند که آیا پرچم autoPR (استخراج شده از پیام کامیت) درست است یا خیر.

* مسیر درست (True Path): به دریافت جزئیات تیکت جیرا برای ایجاد PR ادامه می‌دهد.

* مسیر نادرست (False Path): به بررسی دستور تکمیل وظیفه ادامه می‌دهد.

* ورودی: خروجی از نود Commit Message Breakdown.

* یادداشت چسبان (Sticky Note): "آیا باید PR ایجاد کنیم؟ (بررسی برای [auto-pr])"

  • نود (Node): Check for task completed command

* نوع: If

* شرط: بررسی می‌کند که آیا پرچم taskCompleted (استخراج شده از پیام کامیت) درست است یا خیر.

* مسیر درست (True Path): به دریافت جزئیات تیکت جیرا برای به‌روزرسانی وضعیت ادامه می‌دهد.

* مسیر نادرست (False Path): به سمت مدیریت خطای Invalid commit message هدایت می‌شود.

* ورودی: خروجی از نود Check for PR commands (مسیر نادرست).

* یادداشت چسبان (Sticky Note): "آیا وظیفه تکمیل شده است؟ (بررسی برای [taskcompleted])"

۴. تأیید وظیفه جیرا

هدف: قبل از ادامه به‌روزرسانی‌ها، تأیید می‌کند که وظیفه جیرا ارجاع شده در پیام کامیت وجود دارد.

  • نود (Node): Get task details for PR

* نوع: Jira (عملیات دریافت - Get Operation)

* عملکرد: جزئیات وظیفه جیرا را با استفاده از کلید وظیفه جیرا استخراج شده بازیابی می‌کند.

* ورودی: مسیر درست از Check for PR commands.

* خروجی: JSON جزئیات وظیفه جیرا.

* ملاحظات: نیاز به احراز هویت معتبر API جیرا دارد. در صورت عدم وجود وظیفه، ناموفق خواهد بود.

  • نود (Node): Get Task Details without PR

* نوع: Jira (عملیات دریافت - Get Operation)

* عملکرد: جزئیات وظیفه جیرا را با استفاده از کلید وظیفه جیرا استخراج شده بازیابی می‌کند.

* ورودی: مسیر درست از Check for task completed command.

* خروجی: JSON جزئیات وظیفه جیرا.

* ملاحظات: نیاز به احراز هویت معتبر API جیرا دارد. در صورت عدم وجود وظیفه، ناموفق خواهد بود.

  • نود (Node): Check if task exist (برای مسیر PR)

* نوع: If

* شرط: بررسی می‌کند که آیا شناسه وظیفه جیرا با موفقیت بازیابی شده است و آیا پرچم taskCompleted درست است یا خیر.

* مسیر درست (True Path): پس از ایجاد PR، به به‌روزرسانی وضعیت وظیفه جیرا ادامه می‌دهد.

* مسیر نادرست (False Path): خطای JIRA Task does not exist را فعال می‌کند.

* ورودی: خروجی از Get task details for PR.

  • نود (Node): Check if task exists (برای مسیر غیر PR)

* نوع: If

* شرط: بررسی می‌کند که آیا شناسه وظیفه جیرا با موفقیت بازیابی شده است و آیا پرچم taskCompleted درست است یا خیر.

* مسیر درست (True Path): بدون ایجاد PR، به به‌روزرسانی وضعیت وظیفه جیرا ادامه می‌دهد.

* مسیر نادرست (False Path): خطای JIRA Task does not exist را فعال می‌کند.

* ورودی: خروجی از Get Task Details without PR.

  • نود (Node): JIRA Task does not exist

* نوع: StopAndError

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

* یادداشت چسبان (Sticky Note): "شبکه ایمنی: اطمینان از اعتبار وظیفه جیرا."

۵. بررسی وجود PR

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

  • نود (Node): Check if PR exists

* نوع: HTTP Request

* عملکرد: درخواستی به API گیت‌هاب برای لیست کردن PRهای مخزن، فیلتر شده بر اساس شاخه head پوش، ارسال می‌کند.

* ورودی: جزئیات وظیفه جیرا از نود مربوطه جیرا.

* خروجی: لیستی از PRهای موجود یا یک آرایه خالی.

* ملاحظات: نیاز به اعتبارنامه API گیت‌هاب دارد. مشمول محدودیت‌های نرخ API و خطاهای احتمالی شبکه است.

* یادداشت چسبان (Sticky Note): "با بررسی گیت‌هاب از ایجاد PRهای تکراری جلوگیری کنید."

  • نود (Node): Process PR Existence

* نوع: Code (JavaScript)

* عملکرد: پاسخ را از Check if PR exists تجزیه و تحلیل می‌کند. در صورت یافتن PR، پرچم prExists را روی true و در غیر این صورت روی false تنظیم می‌کند. در صورت یافتن، داده‌های PR را شامل می‌شود.

* ورودی: خروجی از Check if PR exists.

* خروجی: JSON یکپارچه حاوی پرچم prExists و داده‌های مربوط به PR.

  • نود (Node): Merge PR Data

* نوع: Merge (انتخاب شاخه - Choose Branch)

* عملکرد: جریان‌های داده را از بررسی وجود PR و داده‌های پردازش شده PR ترکیب می‌کند و آن را برای مرحله بعدی آماده می‌سازد.

* ورودی: خروجی از Process PR Existence.

* خروجی: داده‌های ادغام شده برای منطق ایجاد PR.

* یادداشت چسبان (Sticky Note): "اطلاعات PR را تجمیع می‌کند."

۶. ایجاد PR

هدف: در صورتی که PR موجودی یافت نشود و دستور [auto-pr] در پیام کامیت گنجانده شده باشد، یک درخواست ادغام گیت‌هاب ایجاد می‌کند.

  • نود (Node): Check whether a PR already exists

* نوع: If

* شرط: پرچم prExists را از نود Process PR Existence بررسی می‌کند.

* مسیر درست (True Path): مرحله ایجاد PR را رد می‌کند.

* مسیر نادرست (False Path): به ایجاد PR ادامه می‌دهد.

* ورودی: خروجی از Merge PR Data.

  • نود (Node): Request to create PR

* نوع: HTTP Request

* عملکرد: یک درخواست POST به API گیت‌هاب برای ایجاد یک درخواست ادغام جدید ارسال می‌کند. عنوان، شاخه head، شاخه base و بدنه به صورت پویا از اطلاعات کامیت تجزیه شده تولید می‌شوند.

* ورودی: خروجی از Check whether a PR already exists (مسیر نادرست).

* خروجی: جزئیات PR ایجاد شده جدید.

* ملاحظات: نیاز به اعتبارنامه API گیت‌هاب دارد. مشمول محدودیت‌های نرخ API، خطاهای احراز هویت و خطاهای شبکه است. اطمینان حاصل کنید که شاخه base معتبر است.

* یادداشت چسبان (Sticky Note): "ایجاد درخواست ادغام گیت‌هاب."

۷. به‌روزرسانی وضعیت وظیفه جیرا

هدف: در صورت وجود دستور [taskcompleted]، وضعیت وظیفه جیرا را به "Development Done" به‌روزرسانی می‌کند. این می‌تواند پس از ایجاد PR یا به طور مستقل رخ دهد.

  • نود (Node): Update task status after PR

* نوع: Jira (عملیات به‌روزرسانی - Update Operation)

* عملکرد: وضعیت وظیفه جیرا را به شناسه 61 (معمولاً "Development Done") به‌روزرسانی می‌کند.

* ورودی: مسیر درست از Check if task exist (پس از مسیر ایجاد PR).

* خروجی: تأیید به‌روزرسانی وظیفه جیرا.

* یادداشت چسبان (Sticky Note): "وظیفه جیرا را پس از PR به عنوان 'Development Done' علامت‌گذاری می‌کند."

  • نود (Node): Update the task status without PR

* نوع: Jira (عملیات به‌روزرسانی - Update Operation)

* عملکرد: وضعیت وظیفه جیرا را به شناسه 61 (معمولاً "Development Done") به‌روزرسانی می‌کند.

* ورودی: مسیر درست از Check if task exists (بدون مسیر ایجاد PR).

* خروجی: تأیید به‌روزرسانی وظیفه جیرا.

* یادداشت چسبان (Sticky Note): "وظیفه جیرا را بدون PR به عنوان 'Development Done' علامت‌گذاری می‌کند."

۸. اعلان‌ها و ثبت وقایع

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

  • نود (Node): Send message in slack with PR

* نوع: Slack

* عملکرد: پیامی را به یک کانال اسلک پیکربندی شده ارسال می‌کند که نشان می‌دهد PR ایجاد شده و وظیفه جیرا به‌روزرسانی شده است.

* ورودی: خروجی از نود به‌روزرسانی جیرا (پس از ایجاد PR).

* خروجی: وضعیت پیام اسلک.

* ملاحظات: نیاز به احراز هویت API اسلک دارد.

  • نود (Node): Append a block in notion with PR

* نوع: Notion

* عملکرد: بلوکی را به یک صفحه نوتین مشخص شده اضافه می‌کند که خلاصه ایجاد PR و به‌روزرسانی جیرا را ارائه می‌دهد.

* ورودی: خروجی از Send message in slack with PR.

* خروجی: وضعیت به‌روزرسانی بلوک نوتین.

* ملاحظات: نیاز به احراز هویت API نوتین دارد.

  • نود (Node): Send message in slack without PR

* نوع: Slack

* عملکرد: پیامی را به اسلک ارسال می‌کند که فقط به‌روزرسانی وضعیت وظیفه جیرا را نشان می‌دهد.

* ورودی: خروجی از نود به‌روزرسانی جیرا (بدون ایجاد PR).

* خروجی: وضعیت پیام اسلک.

  • نود (Node): Append a block in notion without PR

* نوع: Notion

* عملکرد: بلوکی را به یک صفحه نوتین اضافه می‌کند که فقط به‌روزرسانی وضعیت وظیفه جیرا را خلاصه می‌کند.

* ورودی: خروجی از Send message in slack without PR.

* خروجی: وضعیت به‌روزرسانی بلوک نوتین.

  • یادداشت چسبان (Sticky Note): "تیم را از طریق اسلک و نوتین مطلع کنید."

۹. مدیریت خطا و کنترل گردش کار

هدف: اطمینان از خاتمه یافتن روان گردش کار و ارائه بازخورد واضح در صورت ورودی نامعتبر یا شرایط غیرمنتظره.

  • نود (Node): Invalid commit message

* نوع: StopAndError

* عملکرد: در صورت نادرست بودن فرمت پیام کامیت یا عدم وجود دستورات ضروری، گردش کار را متوقف می‌کند.

* ورودی: مسیر نادرست از Check for task completed command.

* یادداشت چسبان (Sticky Note): "از معتبر بودن پیام‌های کامیت اطمینان حاصل می‌کند."

  • نود (Node): JIRA Task does not exist

* نوع: StopAndError

* عملکرد: در صورت عدم یافتن یا تأیید وظیفه جیرا ارجاع شده، گردش کار را متوقف می‌کند.

* ورودی: مسیرهای نادرست از نودهای If بررسی وجود جیرا.

* یادداشت چسبان (Sticky Note): "در صورت نامعتبر بودن وظیفه جیرا متوقف می‌شود."

---

جدول خلاصه

نام نود (Node Name)نوع نود (Node Type)نقش عملکردی (Functional Role)نود(های) ورودی (Input Node(s))نود(های) خروجی (Output Node(s))یادداشت چسبان (Sticky Note)
WebhookWebhookگوش دادن به رویدادهای push در GitHub-Commit Message Breakdown"گوش دادن به رویدادهای push در GitHub."
Commit Message BreakdownCodeتجزیه پیام کامیت برای کلید Jira، دستورات و غیرهWebhookCheck for PR commands, Check for task completed command"تجزیه پیام کامیت برای کلید Jira، دستورات و شاخه پایه."
Check for PR commandsIfتصمیم‌گیری در مورد اجرای منطق ایجاد PRCommit Message BreakdownGet task details for PR (True), Check for task completed command (False)"آیا باید PR ایجاد کنیم؟ (بررسی برای [auto-pr])"
Check for task completed commandIfتصمیم‌گیری در مورد اجرای منطق به‌روزرسانی JiraCheck for PR commands (False)Get Task Details without PR (True), Invalid commit message (False)"آیا وظیفه تکمیل شده است؟ (بررسی برای [taskcompleted])"
Get task details for PRJiraواکشی جزئیات وظیفه Jira برای مسیر PRCheck for PR commands (True)Check if task exist"بازیابی جزئیات وظیفه Jira."
Get Task Details without PRJiraواکشی جزئیات وظیفه Jira برای مسیر غیر PRCheck for task completed command (True)Check if task exists"بازیابی جزئیات وظیفه Jira."
Check if task existIfاعتبارسنجی وظیفه Jira برای مسیر PRGet task details for PRUpdate task status after PR (True), JIRA Task does not exist (False)"اعتبارسنجی وجود وظیفه Jira برای مسیر PR."
Check if task existsIfاعتبارسنجی وظیفه Jira برای مسیر غیر PRGet Task Details without PRUpdate the task status without PR (True), JIRA Task does not exist (False)"اعتبارسنجی وجود وظیفه Jira برای مسیر غیر PR."
JIRA Task does not existStopAndErrorتوقف گردش کار در صورت نامعتبر بودن وظیفه JiraCheck if task exist (False), Check if task exists (False)-"شبکه ایمنی: اطمینان از معتبر بودن وظیفه Jira."
Check if PR existsHTTP Requestپرس‌وجو از API GitHub برای PRهای موجودGet task details for PR (از طریق مسیر True Check for PR commands)Process PR Existence"جلوگیری از ایجاد PR تکراری با بررسی GitHub."
Process PR ExistenceCodeپردازش پاسخ API GitHub برای وجود PRCheck if PR existsMerge PR Data"تعیین اینکه آیا PR از قبل وجود دارد یا خیر."
Merge PR DataMergeتجمیع داده‌های PRProcess PR ExistenceCheck whether a PR already exists"تجمیع اطلاعات PR."
Check whether a PR already existsIfتصمیم‌گیری در مورد ایجاد PR جدیدMerge PR DataRequest to create PR (False), (مسیر True از ایجاد PR صرف نظر می‌کند)"در صورت وجود PR، از ایجاد PR جدید صرف نظر کنید."
Request to create PRHTTP Requestایجاد یک درخواست ادغام جدید در GitHubCheck whether a PR already exists (False)Update task status after PR (اگر taskCompleted درست باشد)، Send message in slack with PR (اگر taskCompleted نباشد)"ایجاد درخواست ادغام در GitHub."
Update task status after PRJiraبه‌روزرسانی وضعیت Jira پس از ایجاد PRCheck if task exist (True)Send message in slack with PR"علامت‌گذاری وظیفه Jira به عنوان 'Development Done' پس از PR."
Update the task status without PRJiraبه‌روزرسانی وضعیت Jira بدون ایجاد PRCheck if task exists (True)Send message in slack without PR"علامت‌گذاری وظیفه Jira به عنوان 'Development Done' بدون PR."
Send message in slack with PRSlackاطلاع‌رسانی به Slack در مورد ایجاد PR و به‌روزرسانی JiraUpdate task status after PRAppend a block in notion with PR"اطلاع‌رسانی به تیم از طریق Slack (با PR)."
Append a block in notion with PRNotionثبت ایجاد PR و به‌روزرسانی Jira در NotionSend message in slack with PR(پایان مسیر)"ثبت جزئیات در Notion (با PR)."
Send message in slack without PRSlackاطلاع‌رسانی به Slack فقط در مورد به‌روزرسانی JiraUpdate the task status without PRAppend a block in notion without PR"اطلاع‌رسانی به تیم از طریق Slack (بدون PR)."
Append a block in notion without PRNotionثبت فقط به‌روزرسانی Jira در NotionSend message in slack without PR(پایان مسیر)"ثبت جزئیات در Notion (بدون PR)."
Invalid commit messageStopAndErrorتوقف گردش کار برای پیام‌های کامیت نامعتبرCheck for task completed command (False)-"اطمینان از معتبر بودن پیام‌های کامیت."

---

این گردش کار را در کاتالوگ Pixori.me کاوش کنید: https://pixori.me/n8n

Nodeهای استفاده‌شده

سوالات متداول

این گردش کار n8n چه کاری انجام می‌دهد؟

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

چگونه می‌توانم یک درخواست ادغام (PR) را با استفاده از این گردش کار ایجاد کنم؟

برای ایجاد خودکار PR، باید پیام کامیت خود را با یک شناسه تیکت جیرا و دستور `[auto-pr]` به همراه شاخه پایه هدف (اختیاری) فرمت‌بندی کنید. به عنوان مثال: `PROJ-123 Add new feature [auto-pr main]`.

چگونه وضعیت وظیفه جیرا را با این گردش کار به‌روزرسانی کنم؟

برای به‌روزرسانی وضعیت وظیفه جیرا، پیام کامیت خود را با شناسه تیکت جیرا و دستور `[taskcompleted]` فرمت‌بندی کنید. به عنوان مثال: `PROJ-123 Fix bug [taskcompleted]`.

آیا این گردش کار از چندین مخزن پشتیبانی می‌کند؟

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

workflowهای مرتبط

این workflow در کاتالوگ Pixori.me بایگانی شده است. لایسنس اصلی متعلق به سازنده workflow است.