عیب یابی CI/CD

ساخت وبلاگ

GitLab چندین ابزار برای کمک به عیب یابی خطوط لوله شما فراهم می کند.

این راهنما همچنین مشکلات رایج و راه حل های ممکن را فهرست می کند.

بررسی نحو

منبع اولیه مشکلات می تواند نحو نادرست باشد. خط لوله یک نشان نامعتبر yaml را نشان می دهد و در صورت مشاهده هرگونه مشکل نحوی یا قالب بندی، اجرا نمی شود.

gitlab-ci. yml. را با ویرایشگر خط لوله ویرایش کنید

  • پیشنهادات تکمیل کد که تضمین می کند فقط از کلمات کلیدی پذیرفته شده استفاده می کنید.
  • برجسته سازی و اعتبار سنجی خودکار نحو.
  • تجسم پیکربندی CI/CD، یک نمایش گرافیکی از فایل gitlab-ci. yml. شما.

gitlab-ci. yml. را به صورت محلی ویرایش کنید

اگر ترجیح می دهید پیکربندی خط لوله خود را به صورت محلی ویرایش کنید، می توانید از طرحواره 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 Lint یک راه ساده برای اطمینان از صحیح بودن نحو فایل پیکربندی CI/CD است. فایل های gitlab-ci. yml یا پیکربندی تک تک شغل ها را برای تأیید نحو اصلی جای گذاری کنید.

هنگامی که یک فایل . gitlab-ci. yml در یک پروژه وجود دارد، می توانید از ابزار CI Lint نیز برای شبیه سازی ایجاد یک خط لوله کامل استفاده کنید. این بررسی عمیق تر از نحو پیکربندی را انجام می دهد.

بررسی متغیرها

بخش کلیدی عیب یابی CI/CD این است که بررسی کنید کدام متغیرها در خط لوله وجود دارند و مقادیر آنها چقدر است. بسیاری از پیکربندی های خط لوله به متغیرها وابسته است و تأیید آنها یکی از سریع ترین راه ها برای یافتن منبع مشکل است.

لیست کامل متغیرهای موجود در هر کار مشکل ساز را صادر کنید. بررسی کنید که آیا متغیرهایی که انتظار دارید وجود دارند یا خیر، و بررسی کنید که آیا مقادیر آنها همان چیزی است که شما انتظار دارید.

اسناد GitLab CI/CD

مرجع کامل . gitlab-ci. yml حاوی لیست کاملی از هر کلمه کلیدی است که می توانید برای پیکربندی خطوط لوله خود استفاده کنید.

همچنین می توانید به تعداد زیادی نمونه و الگوهای پیکربندی خط لوله نگاه کنید.

اسناد انواع خطوط لوله

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

    راهنماهای عیب یابی برای ویژگی های CI/CD

    • رجیستری کانتینر
    • دونده گیتلب
    • قطارها را ادغام کنید
    • Docker Build
    • محیط

    مسائل مشترک CI/CD

    با تجزیه و تحلیل رفتار قوانین یا فقط/به جز پیکربندی ، می توان بسیاری از مسائل خط لوله مشترک را برطرف کرد. شما نباید از این دو تنظیم در همان خط لوله استفاده کنید ، زیرا آنها متفاوت رفتار می کنند. پیش بینی چگونگی اجرای یک خط لوله با این رفتار مختلط دشوار است.

    اگر قوانین شما یا فقط/به جز پیکربندی از متغیرهای از پیش تعریف شده مانند CI_PIPELINE_SOURCE ، CI_MERGE_REQUEST_ID استفاده می کند ، باید آنها را به عنوان اولین مرحله عیب یابی تأیید کنید.

    مشاغل یا خطوط لوله در صورت انتظار اجرا نمی شوند

    قوانین یا فقط/به جز کلمات کلیدی همان چیزی است که تعیین می کند شغل به خط لوله اضافه شده است یا خیر. اگر خط لوله اجرا شود ، اما یک کار به خط لوله اضافه نمی شود ، معمولاً به دلیل قوانین یا فقط/به جز مشکلات پیکربندی است.

    اگر به نظر نمی رسد که یک خط لوله به هیچ وجه اجرا شود ، بدون پیام خطایی ، ممکن است به دلیل قوانین یا فقط/به جز پیکربندی یا گردش کار باشد: کلمه کلیدی قوانین.

    اگر فقط از/به جز کلمه کلیدی قوانین تبدیل می شوید ، باید جزئیات پیکربندی قوانین را با دقت بررسی کنید. رفتار فقط/به جز قوانین متفاوت است و می تواند هنگام مهاجرت بین این دو رفتار غیر منتظره ایجاد کند.

    معمول اگر بندهای قوانین برای نمونه هایی از نحوه نوشتن قوانینی که به روشی که انتظار دارید رفتار کنند ، بسیار مفید است.

    دو خط لوله همزمان اجرا می شوند

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

    این وضعیت معمولاً در اثر پیکربندی قوانین ایجاد می شود و روش های مختلفی برای جلوگیری از خطوط لوله تکراری وجود دارد.

    یک کار در خط لوله نیست

    GitLab تعیین می کند که آیا شغل بر اساس تنها/به جز یا قوانینی که برای کار تعریف شده است به خط لوله اضافه می شود. اگر این کار اجرا نشود ، احتمالاً همانطور که انتظار دارید ارزیابی نمی شود.

    بدون خط لوله یا نوع اشتباه خط لوله اجرا می شود

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

    اگر خط لوله اجرا نمی شد، به احتمال زیاد همه کارها قوانینی داشتند یا فقط/به جز اینکه مانع از اضافه شدن آنها به خط لوله می شد.

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

    همچنین ممکن است گردش کار شما: پیکربندی قوانین خط لوله را مسدود کرده باشد یا نوع خط لوله اشتباهی را مجاز کرده باشد.

    خط لوله با بسیاری از مشاغل شروع نمی شود

    خط لوله ای که کارهای بیشتری از محدودیت های CI/CD تعریف شده نمونه دارد، شروع نمی شود.

    برای کاهش تعداد مشاغل در خط لوله خود، می توانید پیکربندی . gitlab-ci. yml خود را با استفاده از خطوط لوله والدین-فرزند تقسیم کنید.

    یک کار به طور غیرمنتظره اجرا می شود

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

    کلمه کلیدی تغییرات در ترکیب با فقط/به جز یا قوانین استفاده می شود. توصیه می شود از تغییرات با قوانین یا فقط/به جز پیکربندی استفاده کنید که تضمین می کند کار فقط به خطوط لوله شاخه یا خطوط لوله درخواست ادغام اضافه می شود.

    خطای "مرگبار: مرجع درخت نیست".

    1. کاربر یک شاخه ویژگی به نام نمونه ایجاد می کند و آن را به یک مخزن راه دور می فرستد.
    2. یک خط لوله جدید در شاخه نمونه شروع به اجرا می کند.
    3. یک کاربر شاخه نمونه را بر روی آخرین شاخه پیش فرض تغییر داده و آن را با فشار به مخزن راه دور خود فشار می دهد.
    4. یک خط لوله جدید دوباره در شاخه نمونه شروع به اجرا می کند، با این حال خط لوله قبلی (2) به دلیل خطای fatal: مرجع درختی نیست: از کار می افتد.

    این به این دلیل اتفاق می افتد که خط لوله قبلی نمی تواند یک checkout-SHA (که با رکورد خط لوله مرتبط است) را از شاخه نمونه پیدا کند که تاریخچه commit قبلاً توسط فشار فشار بازنویسی شده است. به طور مشابه، خطوط لوله نتایج ادغام شده ممکن است به طور متناوب به همین دلیل شکست بخورند.

    1. یک خط لوله بر روی شاخه ویژگی به نام نمونه ایجاد می شود.
    2. یک مرجع خط لوله پایدار در refs/pipelines/ ایجاد می شود که checkout-SHA رکورد خط لوله مرتبط را حفظ می کند. این ref ثابت در طول اجرای خط لوله دست نخورده باقی می ماند، حتی اگر تاریخچه ارتکاب شاخه نمونه با فشار فشار بازنویسی شده باشد.
    3. دونده مرجع خط لوله پایدار را واکشی می کند و کد منبع را از checkout-SHA دریافت می کند.
    4. با اتمام خط لوله ، Ref مداوم آن در یک فرآیند پس زمینه تمیز می شود.

    پیام های خط لوله درخواست را ادغام کنید

    ویجت خط لوله درخواست ادغام اطلاعات مربوط به وضعیت خط لوله را در یک درخواست ادغام نشان می دهد. این بالاتر از توانایی ادغام ویجت وضعیت است.

    پیام "بررسی توانایی ادغام به طور خودکار"

    یک مسئله شناخته شده وجود دارد که در آن می توان درخواست ادغام را با توانایی بررسی برای ادغام پیام به طور خودکار گیر کرد.

    • صفحه درخواست ادغام را تازه کنید.
    • درخواست ادغام را ببندید و دوباره باز کنید.
    • درخواست ادغام را با اقدام سریع /Rebase Rebase Rebase کنید.
    • اگر قبلاً تأیید کرده اید که درخواست ادغام آماده ادغام است ، می توانید آن را با عمل سریع /ادغام ادغام کنید.

    پیام "بررسی وضعیت خط لوله"

    • Gitlab هنوز ایجاد خط لوله را تمام نکرده است.
    • شما از یک سرویس CI خارجی استفاده می کنید و GitLab هنوز از این سرویس نشنیده است.
    • شما در پروژه خود از خطوط لوله CI/CD استفاده نمی کنید.
    • شما در پروژه خود از خطوط لوله CI/CD استفاده می کنید ، اما پیکربندی شما برای درخواست ادغام خود از اجرای خط لوله در شعبه منبع جلوگیری می کند.
    • آخرین خط لوله حذف شد (این یک مسئله شناخته شده است).
    • شعبه منبع درخواست ادغام روی یک چنگال خصوصی است.

    پس از ایجاد خط لوله ، پیام با وضعیت خط لوله به روز می شود.

    پیام های وضعیت درخواست را ادغام کنید

    ویجت وضعیت درخواست ادغام دکمه ادغام را نشان می دهد و اینکه آیا درخواست ادغام آماده ادغام است یا خیر. اگر درخواست ادغام قابل ادغام نباشد ، دلیل این امر نمایش داده می شود.

    اگر خط لوله هنوز در حال اجرا باشد ، هنگامی که خط لوله موفق می شود ، ادغام با ادغام جایگزین می شود.

    اگر قطارهای ادغام فعال شوند ، دکمه یا به قطار ادغام اضافه می شود یا در هنگام موفقیت خط لوله ، به قطار ادغام اضافه می شود.

    پیام "یک خط لوله CI/CD باید قبل از ادغام اجرا شود و موفق باشد" پیام "

    این پیام نشان داده شده است اگر خطوط لوله باید موفق شوند در پروژه فعال شوند و خط لوله هنوز با موفقیت اجرا نشده است. این امر همچنین در صورتی که خط لوله هنوز ایجاد نشده باشد ، یا اگر منتظر سرویس CI خارجی هستید ، صدق می کند. اگر از خطوط لوله برای پروژه خود استفاده نمی کنید ، پس باید خطوط لوله را غیرفعال کنید تا بتوانید درخواست های ادغام را بپذیرید.

    "ادغام مسدود شده: خط لوله باید موفق شود. یک تعهد جدید را فشار دهید که پیام شکست را برطرف می کند "

    اگر خط لوله درخواست ادغام ، خط لوله نتایج ادغام شده یا خط لوله قطار ادغام یا لغو شده باشد ، این پیام نشان داده شده است. این اتفاق نمی افتد که یک خط لوله اصلی شاخه شکست بخورد.

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

    گروه پروژه/پروژه یافت نشد یا دسترسی پیدا کرد

    • پیکربندی به پروژه ای اشاره دارد که یافت نمی شود.
    • کاربر که خط لوله را اجرا می کند ، قادر به دسترسی به هر پروژه شامل نیست.
    • مسیر پروژه در قالب My-Group/My Project است و هیچ پوشه ای در مخزن را شامل نمی شود.
    • کاربر که خط لوله را اجرا می کند ، عضو پروژه هایی است که حاوی پرونده های موجود است. کاربران همچنین باید اجازه اجرای مشاغل CI/CD را در همان پروژه ها داشته باشند.

    پیام "Yaml تجزیه شده خیلی بزرگ است"

    این پیام هنگامی نمایش داده می شود که پیکربندی YAML خیلی بزرگ باشد یا خیلی عمیق باشد. پرونده های YAML با تعداد زیادی از شامل و هزاران خط در کل ، احتمالاً به این حد حافظه ضربه می زنند. به عنوان مثال ، یک فایل YAML که 200 کیلوبایت است احتمالاً به حد حافظه پیش فرض ضربه می زند.

    • طول پیکربندی CI/CD گسترش یافته را در برگه YAML ادغام شده ویرایشگر خط لوله بررسی کنید. به دنبال پیکربندی تکراری باشید که می تواند حذف یا ساده شود.
    • بخش های اسکریپت طولانی یا مکرر را به اسکریپت های مستقل در پروژه منتقل کنید.
    • از خطوط لوله والدین و کودک برای انتقال برخی از کارها به مشاغل در خط لوله مستقل کودک استفاده کنید.

    در یک نمونه خود مدیریت ، می توانید محدودیت های اندازه را افزایش دهید.

    خطای 500 هنگام ویرایش پرونده . gitlab-ci. yml

    یک حلقه از پرونده های پیکربندی موجود می تواند هنگام ویرایش پرونده . gitlab-ci. yml با ویرایشگر وب ، خطای 500 ایجاد کند.

    یک کار CI/CD در هنگام اجرای دوباره از پیکربندی جدیدتر استفاده نمی کند

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

    هشدارهای خط لوله

    • پیکربندی را با ابزار CI LINT تأیید کنید.
    • یک خط لوله را به صورت دستی اجرا کنید.

    "کار ممکن است به چندین خط لوله اجازه دهد تا یک عمل واحد اجرا کنند" هشدار

    هنگامی که از قوانینی با بند هنگام بند بدون بند IF استفاده می کنید ، ممکن است خطوط لوله چندگانه اجرا شود. معمولاً این اتفاق می افتد که شما به یک شاخه که درخواست ادغام باز در ارتباط با آن دارد ، متعهد شوید.

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

    راه حل کنسول اگر کار با استفاده از Resource_Group گیر می شود

    هنگامی که برای کار در حال اجرا به صفحه ورود به سیستم کار می کنید ، می توانید تا 60 ثانیه قبل از به روزرسانی ورود به سیستم تأخیر داشته باشید. زمان تازه سازی پیش فرض 60 ثانیه است ، اما پس از مشاهده ورود به سیستم در UI ، به روزرسانی های ورود به سیستم زیر باید هر 3 ثانیه اتفاق بیفتد.

    بازیابی فاجعه

    شما می توانید برخی از قسمت های مهم اما محاسباتی گران قیمت را غیرفعال کنید تا استرس را در پایگاه داده در حین خرابی مداوم تسکین دهید.

    برنامه ریزی عادلانه را در دوندگان مشترک غیرفعال کنید

    هنگام پاکسازی یک کار بزرگ از مشاغل ، می توانید به طور موقت CI_QUEUEING_DISASTER_RECOVERY_DISIBLE_FAIR_SCHEDULING FALL را فعال کنید. این پرچم برنامه ریزی منصفانه را برای دوندگان مشترک غیرفعال می کند ، که باعث کاهش مصرف منابع سیستم در نقطه پایانی مشاغل/درخواست می شود.

    در صورت فعال شدن ، مشاغل به ترتیب در سیستم قرار داده شده اند ، به جای اینکه در بسیاری از پروژه ها متعادل شوند.

    اجرای سهمیه سهمیه CI/CD را غیرفعال کنید

    برای غیرفعال کردن اجرای سهمیه های دقیقه CI/CD در دونده های مشترک ، می توانید به طور موقت CI_QUEUEING_DISASTER_RECOVERY_DISABLE_QUOTA را فعال کنید. این پرچم باعث کاهش مصرف منابع سیستم در نقطه پایانی مشاغل/درخواست می شود.

    در صورت فعال بودن ، مشاغل ایجاد شده در ساعت آخر می توانند در پروژه هایی که از سهمیه خارج هستند ، اجرا شوند. مشاغل اولیه در حال حاضر توسط یک کارگر پس زمینه دوره ای (stuckcijobsworker) لغو شده است.

    دستورات کنسول ریل های عیب یابی CI/CD

    دستورات زیر در کنسول ریل اجرا می شود.

    احتیاط

    هر دستور که داده ها را به طور مستقیم تغییر دهد ، اگر به درستی اجرا نشود ، یا در شرایط مناسب ، می تواند آسیب برساند. ما به شدت توصیه می کنیم که آنها را در یک محیط آزمایشی با پشتیبان گیری از نمونه آماده برای ترمیم ، درست در صورت بروز کنید.

آموزش مقدماتی فارکس...
ما را در سایت آموزش مقدماتی فارکس دنبال می کنید

برچسب : نویسنده : علیرام نورایی بازدید : <-PostHit-> تاريخ : چهارشنبه 15 شهريور 1402 ساعت: 16:57