GitLab چندین ابزار برای کمک به عیب یابی خطوط لوله شما فراهم می کند.
این راهنما همچنین مشکلات رایج و راه حل های ممکن را فهرست می کند.
منبع اولیه مشکلات می تواند نحو نادرست باشد. خط لوله یک نشان نامعتبر yaml را نشان می دهد و در صورت مشاهده هرگونه مشکل نحوی یا قالب بندی، اجرا نمی شود.
اگر ترجیح می دهید پیکربندی خط لوله خود را به صورت محلی ویرایش کنید، می توانید از طرحواره CI/CD GitLab در ویرایشگر خود برای تأیید مشکلات نحوی اولیه استفاده کنید. هر ویرایشگر با پشتیبانی Schemastore به طور پیش فرض از طرحواره CI/CD GitLab استفاده می کند.
اگر نیاز به پیوند مستقیم به این طرح دارید، در آدرس زیر است:
https://gitlab. com/gitlab-org/gitlab/-/blob/master/app/assets/javascripts/editor/schema/ci. json برای مشاهده لیست کامل برچسب های سفارشی تحت پوشش طرحواره CI/CD، آخرین نسخه طرحواره را بررسی کنید.
ابزار CI Lint یک راه ساده برای اطمینان از صحیح بودن نحو فایل پیکربندی CI/CD است. فایل های gitlab-ci. yml یا پیکربندی تک تک شغل ها را برای تأیید نحو اصلی جای گذاری کنید.
هنگامی که یک فایل . gitlab-ci. yml در یک پروژه وجود دارد، می توانید از ابزار CI Lint نیز برای شبیه سازی ایجاد یک خط لوله کامل استفاده کنید. این بررسی عمیق تر از نحو پیکربندی را انجام می دهد.
بخش کلیدی عیب یابی CI/CD این است که بررسی کنید کدام متغیرها در خط لوله وجود دارند و مقادیر آنها چقدر است. بسیاری از پیکربندی های خط لوله به متغیرها وابسته است و تأیید آنها یکی از سریع ترین راه ها برای یافتن منبع مشکل است.
لیست کامل متغیرهای موجود در هر کار مشکل ساز را صادر کنید. بررسی کنید که آیا متغیرهایی که انتظار دارید وجود دارند یا خیر، و بررسی کنید که آیا مقادیر آنها همان چیزی است که شما انتظار دارید.
مرجع کامل . gitlab-ci. yml حاوی لیست کاملی از هر کلمه کلیدی است که می توانید برای پیکربندی خطوط لوله خود استفاده کنید.
همچنین می توانید به تعداد زیادی نمونه و الگوهای پیکربندی خط لوله نگاه کنید.
با تجزیه و تحلیل رفتار قوانین یا فقط/به جز پیکربندی ، می توان بسیاری از مسائل خط لوله مشترک را برطرف کرد. شما نباید از این دو تنظیم در همان خط لوله استفاده کنید ، زیرا آنها متفاوت رفتار می کنند. پیش بینی چگونگی اجرای یک خط لوله با این رفتار مختلط دشوار است.
اگر قوانین شما یا فقط/به جز پیکربندی از متغیرهای از پیش تعریف شده مانند CI_PIPELINE_SOURCE ، CI_MERGE_REQUEST_ID استفاده می کند ، باید آنها را به عنوان اولین مرحله عیب یابی تأیید کنید.
قوانین یا فقط/به جز کلمات کلیدی همان چیزی است که تعیین می کند شغل به خط لوله اضافه شده است یا خیر. اگر خط لوله اجرا شود ، اما یک کار به خط لوله اضافه نمی شود ، معمولاً به دلیل قوانین یا فقط/به جز مشکلات پیکربندی است.
اگر به نظر نمی رسد که یک خط لوله به هیچ وجه اجرا شود ، بدون پیام خطایی ، ممکن است به دلیل قوانین یا فقط/به جز پیکربندی یا گردش کار باشد: کلمه کلیدی قوانین.
اگر فقط از/به جز کلمه کلیدی قوانین تبدیل می شوید ، باید جزئیات پیکربندی قوانین را با دقت بررسی کنید. رفتار فقط/به جز قوانین متفاوت است و می تواند هنگام مهاجرت بین این دو رفتار غیر منتظره ایجاد کند.
معمول اگر بندهای قوانین برای نمونه هایی از نحوه نوشتن قوانینی که به روشی که انتظار دارید رفتار کنند ، بسیار مفید است.
دو خط لوله می توانند هنگام فشار آوردن به یک شاخه که دارای درخواست ادغام باز در ارتباط با آن است ، اجرا شوند. معمولاً یک خط لوله خط لوله درخواست ادغام و دیگری خط لوله شاخه است.
این وضعیت معمولاً در اثر پیکربندی قوانین ایجاد می شود و روش های مختلفی برای جلوگیری از خطوط لوله تکراری وجود دارد.
GitLab تعیین می کند که آیا شغل بر اساس تنها/به جز یا قوانینی که برای کار تعریف شده است به خط لوله اضافه می شود. اگر این کار اجرا نشود ، احتمالاً همانطور که انتظار دارید ارزیابی نمی شود.
قبل از اجرای خط لوله ، GitLab تمام مشاغل موجود در پیکربندی را ارزیابی می کند و سعی می کند آنها را به همه نوع خط لوله موجود اضافه کند. اگر در پایان ارزیابی به آن اضافه نشود ، خط لوله اجرا نمی شود.
اگر خط لوله اجرا نمی شد، به احتمال زیاد همه کارها قوانینی داشتند یا فقط/به جز اینکه مانع از اضافه شدن آنها به خط لوله می شد.
اگر نوع خط لوله اشتباه اجرا شد، باید قوانین یا پیکربندی فقط/به جز بررسی شود تا مطمئن شوید که کارها به نوع خط لوله درست اضافه شده اند. به عنوان مثال، اگر خط لوله درخواست ادغام اجرا نشد، ممکن است مشاغل به جای آن به یک خط لوله شاخه اضافه شده باشند.
همچنین ممکن است گردش کار شما: پیکربندی قوانین خط لوله را مسدود کرده باشد یا نوع خط لوله اشتباهی را مجاز کرده باشد.
خط لوله ای که کارهای بیشتری از محدودیت های CI/CD تعریف شده نمونه دارد، شروع نمی شود.
برای کاهش تعداد مشاغل در خط لوله خود، می توانید پیکربندی . gitlab-ci. yml خود را با استفاده از خطوط لوله والدین-فرزند تقسیم کنید.
دلیل رایجی که یک کار به طور غیرمنتظره به خط لوله اضافه می شود این است که کلمه کلیدی تغییرات همیشه در موارد خاص به درستی ارزیابی می شود. به عنوان مثال، تغییرات همیشه در انواع خطوط لوله خاص، از جمله خطوط لوله برنامه ریزی شده و خطوط لوله برای برچسب ها، صادق است.
کلمه کلیدی تغییرات در ترکیب با فقط/به جز یا قوانین استفاده می شود. توصیه می شود از تغییرات با قوانین یا فقط/به جز پیکربندی استفاده کنید که تضمین می کند کار فقط به خطوط لوله شاخه یا خطوط لوله درخواست ادغام اضافه می شود.
این به این دلیل اتفاق می افتد که خط لوله قبلی نمی تواند یک checkout-SHA (که با رکورد خط لوله مرتبط است) را از شاخه نمونه پیدا کند که تاریخچه commit قبلاً توسط فشار فشار بازنویسی شده است. به طور مشابه، خطوط لوله نتایج ادغام شده ممکن است به طور متناوب به همین دلیل شکست بخورند.
ویجت خط لوله درخواست ادغام اطلاعات مربوط به وضعیت خط لوله را در یک درخواست ادغام نشان می دهد. این بالاتر از توانایی ادغام ویجت وضعیت است.
یک مسئله شناخته شده وجود دارد که در آن می توان درخواست ادغام را با توانایی بررسی برای ادغام پیام به طور خودکار گیر کرد.
پس از ایجاد خط لوله ، پیام با وضعیت خط لوله به روز می شود.
ویجت وضعیت درخواست ادغام دکمه ادغام را نشان می دهد و اینکه آیا درخواست ادغام آماده ادغام است یا خیر. اگر درخواست ادغام قابل ادغام نباشد ، دلیل این امر نمایش داده می شود.
اگر خط لوله هنوز در حال اجرا باشد ، هنگامی که خط لوله موفق می شود ، ادغام با ادغام جایگزین می شود.
اگر قطارهای ادغام فعال شوند ، دکمه یا به قطار ادغام اضافه می شود یا در هنگام موفقیت خط لوله ، به قطار ادغام اضافه می شود.
این پیام نشان داده شده است اگر خطوط لوله باید موفق شوند در پروژه فعال شوند و خط لوله هنوز با موفقیت اجرا نشده است. این امر همچنین در صورتی که خط لوله هنوز ایجاد نشده باشد ، یا اگر منتظر سرویس CI خارجی هستید ، صدق می کند. اگر از خطوط لوله برای پروژه خود استفاده نمی کنید ، پس باید خطوط لوله را غیرفعال کنید تا بتوانید درخواست های ادغام را بپذیرید.
اگر خط لوله درخواست ادغام ، خط لوله نتایج ادغام شده یا خط لوله قطار ادغام یا لغو شده باشد ، این پیام نشان داده شده است. این اتفاق نمی افتد که یک خط لوله اصلی شاخه شکست بخورد.
این پیام هنگامی نمایش داده می شود که پیکربندی YAML خیلی بزرگ باشد یا خیلی عمیق باشد. پرونده های YAML با تعداد زیادی از شامل و هزاران خط در کل ، احتمالاً به این حد حافظه ضربه می زنند. به عنوان مثال ، یک فایل YAML که 200 کیلوبایت است احتمالاً به حد حافظه پیش فرض ضربه می زند.
در یک نمونه خود مدیریت ، می توانید محدودیت های اندازه را افزایش دهید.
یک حلقه از پرونده های پیکربندی موجود می تواند هنگام ویرایش پرونده . gitlab-ci. yml با ویرایشگر وب ، خطای 500 ایجاد کند.
پیکربندی یک خط لوله فقط در هنگام ایجاد خط لوله انجام می شود. هنگامی که یک کار را دوباره انجام می دهید ، هر بار از همان پیکربندی استفاده می کنید. اگر پرونده های پیکربندی را به روز می کنید ، از جمله پرونده های جداگانه اضافه شده با شامل ، باید یک خط لوله جدید را برای استفاده از پیکربندی جدید شروع کنید.
هنگامی که از قوانینی با بند هنگام بند بدون بند IF استفاده می کنید ، ممکن است خطوط لوله چندگانه اجرا شود. معمولاً این اتفاق می افتد که شما به یک شاخه که درخواست ادغام باز در ارتباط با آن دارد ، متعهد شوید.
برای جلوگیری از خطوط لوله کپی ، از گردش کار استفاده کنید: قوانین یا قوانین خود را برای کنترل اینکه خطوط لوله می تواند اجرا کند ، بازنویسی کنید.
هنگامی که برای کار در حال اجرا به صفحه ورود به سیستم کار می کنید ، می توانید تا 60 ثانیه قبل از به روزرسانی ورود به سیستم تأخیر داشته باشید. زمان تازه سازی پیش فرض 60 ثانیه است ، اما پس از مشاهده ورود به سیستم در UI ، به روزرسانی های ورود به سیستم زیر باید هر 3 ثانیه اتفاق بیفتد.
شما می توانید برخی از قسمت های مهم اما محاسباتی گران قیمت را غیرفعال کنید تا استرس را در پایگاه داده در حین خرابی مداوم تسکین دهید.
هنگام پاکسازی یک کار بزرگ از مشاغل ، می توانید به طور موقت CI_QUEUEING_DISASTER_RECOVERY_DISIBLE_FAIR_SCHEDULING FALL را فعال کنید. این پرچم برنامه ریزی منصفانه را برای دوندگان مشترک غیرفعال می کند ، که باعث کاهش مصرف منابع سیستم در نقطه پایانی مشاغل/درخواست می شود.
در صورت فعال شدن ، مشاغل به ترتیب در سیستم قرار داده شده اند ، به جای اینکه در بسیاری از پروژه ها متعادل شوند.
برای غیرفعال کردن اجرای سهمیه های دقیقه CI/CD در دونده های مشترک ، می توانید به طور موقت CI_QUEUEING_DISASTER_RECOVERY_DISABLE_QUOTA را فعال کنید. این پرچم باعث کاهش مصرف منابع سیستم در نقطه پایانی مشاغل/درخواست می شود.
در صورت فعال بودن ، مشاغل ایجاد شده در ساعت آخر می توانند در پروژه هایی که از سهمیه خارج هستند ، اجرا شوند. مشاغل اولیه در حال حاضر توسط یک کارگر پس زمینه دوره ای (stuckcijobsworker) لغو شده است.
دستورات زیر در کنسول ریل اجرا می شود.
احتیاطهر دستور که داده ها را به طور مستقیم تغییر دهد ، اگر به درستی اجرا نشود ، یا در شرایط مناسب ، می تواند آسیب برساند. ما به شدت توصیه می کنیم که آنها را در یک محیط آزمایشی با پشتیبان گیری از نمونه آماده برای ترمیم ، درست در صورت بروز کنید.
برچسب :
نویسنده : علیرام نورایی
بازدید : <-PostHit->