CI/CD به طور خلاصه – انجمن DEV 👩💻👨💻

CI/CD یک روش رایج است که امروزه بسیاری از شرکت ها و پروژه ها از آن استفاده می کنند. با این حال، گاهی اوقات ما به اشتباه از این اصطلاحات استفاده میکنیم، اما در این مقاله به اصول CI/CD میپردازیم، مشکلی را که این روشها حل میکنند و همچنین تجزیه و تحلیل نحوه تناسب آنها با معماری ابری امروزی را بررسی میکنیم.
🔥 جهنم را ادغام کنید
در روزهای اولیه توسعه نرم افزار، توسعه دهندگان کار خود را با فرکانس کمتر ادغام می کردند. کار دستی بود، بنابراین معمولاً یک بار در ماه، توسعه دهندگان دور هم می نشستند همه چیز را ادغام کنید آنها در طول ماه کار می کردند.
حل تعارضات بود درد واقعی، نه به ذکر انجام آزمایش در برابر تعداد زیادی ویژگی ساخته شده. علاوه بر این، استقرار و بازگشت به عقب با جهنم مشکلات همراه بود، به همین دلیل است که آنها این فرآیند را می نامند. جهنم ادغام.
🙏 یک امید جدید
ایده های جدیدی برای غلبه بر این مشکل به وجود آمد. به جای ادغام کارها یک بار در ماه یا حتی بدتر از آن، توسعه دهندگان باید کار را ادغام کنند بیشتر، تقریباً روزانه، چرا که نه چندین بار در روز.
در اسرع وقت کار در شعبه اصلی ادغام می شود و با چنین ادغامی باید اطمینان حاصل کنیم یکپارچه کد منبع دارد کیفیت، امنیت و صحت.
این ویژگیها با استفاده از جستجوگر سبک کد (لینتر)، بررسیهای امنیتی و مجموعه تست خودکار خوب انجام میشوند.
این فرآیند یک نام دارد و به آن ادغام پیوسته یا CI.
چگونه می توانیم یک فرآیند CI را اجرا کنیم؟
از آنجایی که ما روی تیم هایی با چندین نفر کار می کنیم که یک مخزن گیت راه دور (یعنی Github) را به اشتراک می گذارند، می توانیم CI خود را هر کجا که بخواهیم اجرا کنیم.
ممکن است کامپیوتر ما باشد؟ آره.
در تصویر بالا، ما یک سناریوی CI را می بینیم که در آن کد را از یک مخزن راه دور می کشیم (یکپارچه سازی همگام سازی، واکشی + ادغام) و سپس بررسی های لازم را در رایانه خود انجام می دهیم.
اما بهتر است آن را در فضای ابری اجرا کنیم، درست است؟
☁️ اجرای CI در فضای ابری
فرآیند اجرای CI در Cloud می تواند به صورت زیر پیاده سازی شود:
-
یکپارچه سازی کد: مخزن کد در فضای ابری با استفاده از سیستم کنترل نسخه (Git)، به عنوان مثال Github، Gitlab و غیره اجرا می شود.
-
کیفیت، امنیت و صحت کد: در هر تغییر، قبل از رفتن به اصلی شاخه، یک کامپیوتر یا ماشین مجازی در فضای ابری باید کد را از مخزن بررسی کند و بررسی های سبک/امنیت انجام دهد و تست های خودکار را انجام دهد.
بسیاری از شرکت ها ابزارهای CI را در فضای ابری ایجاد کردند تا بتوانیم از آنها برای اجرای سیستم CI خود استفاده کنیم. بازیکنان بزرگ مخصوصا Github و گیتلب از ابزارهای CI خود به همراه مخزن کد (Git) در ابر استفاده می کنند.
اما ابزارهای دیگری در فضای ابری مانند CircleCI، SemaphoreCI به نام چند مورد، که فقط از ابزار CI استفاده می کنند.
همه این ابزارها به نوعی پرداخت می شوند، ما می توانیم به صورت رایگان از آنها استفاده کنیم، اما در صورت افزایش استفاده، در نهایت می توانند گران باشند.
🚀 تحویل اپلیکیشن
بسیار خوب، همه چیز با بخش “ادغام مداوم” خوب است. ما یک سیستم CI خوب در فضای ابری داریم و ممکن است با افزایش استفاده، هزینه آن را بپردازیم.
اما چگونه برنامه را تحویل دهیم؟
با فرض اینکه تمام بررسی های CI انجام شده است با موفقیت به پایان رسید، ما میتوانیم ساخت/بسته برنامه ما در یک نسخه جدید تولید شده و ارائه آن را به تولید، تغییر برنامه قدیمی به جدید، درست است؟
اول، بیایید بگوییم که برنامه را با استفاده از دستگاه خودمان می سازیم:
پس از ساخت، ما باید بسته را به نوعی “رجیستری بسته” در فضای ابری ارسال کنیم، که زیرساخت در حال تولید، بسته جدید را دریافت (کشش) می کند و از بسته قدیمی به بسته جدید “پرداخت” می کند. .
این فرآیند به روز رسانی برنامه در تولید نامیده می شود گسترشو تمام مراحل ساخت/بسته بندی و اطمینان از بکارگیری نسخه جدید در تولید به روشی پایدار، تحویل مداوم یا به سادگی نامیده می شود. سی دی.
در مورد بارگذاری فرآیند سی دی به ابر، همان کاری که در CI انجام می دهیم، چطور؟
این تصویر امروزه بسیار رایج است، بسیاری از پروژه ها با استفاده از معماری بالا یکپارچه و تحویل داده می شوند. ابزارهایی مانند Github و Gitlab نقش مهمی در به کارگیری CI/CD برای استارت آپ ها و شرکت ها ایفا می کنند.
❤️ مسائل جامعه
فرآیند یکپارچه سازی و ارائه یک برنامه به قدری رایج است که بسیاری از افراد و شرکت ها در سراسر جهان به هم پیوستند و یک جامعه متن باز غیر انتفاعی به نام Continuous Delivery Foundation یا ایجاد کردند. CDF، که هدف آن انکوباسیون و فارغ التحصیلی پروژه های منبع باز است که از سیستم های CI/CD به روشی پایدار استفاده می کنند.
این انجمن توسط همان ارزشهای جوامع دیگر مانند بنیاد لینوکس، بنیاد آپاچی، بنیاد محاسبات بومی ابری (CNCF) و غیره هدایت میشود.
امیدوارم از خواندن لذت برده باشید. در پست های آینده، من در مورد Tekton CI/CD صحبت خواهم کرد که یک پروژه CDF فارغ التحصیل شدو اینکه چگونه این ابزار منبع باز به ارائه برنامه های کاربردی ابری در فضای ابری کمک می کند.