CI/CD چیست؟


۱۴ اسفند ۱۴۰۰
سی آی / سی دی (CI/CD) چیست؟

CD/CD را می‌توان روشی خودکار برای ارائه مستمر نرم‌افزار در حال توسعه به کاربران نهایی دانست. درک این تعریف در ابتدای کار سخت است اما پس از آشنا شدن با مفاهیمی مانند continuous integration، continuous delivery و continuous deployment بسیار راحت‌تر از قبل می‌توانید بُعدهای مختلف این روش را درک کنید.

CI (Continuous integration) چیست؟

CI فرایندی است که در آن نرم‌افزار ما build شده و تست‌های نرم‌افزاری اعم از unit و integration testها به‌صورت خودکار اجرا می‌شوند.

حتما در توسعه‌ی مدرن نرم‌افزار مشاهده کرده‌اید که برنامه‌نویسان و توسعه‌دهندگان مختلفی در حال اضافه کردن قابلیت‌های جدید و بهبود ساختارهای فعلی یک پروژه هستند. مدیریت چنین پروژه‌هایی با استفاده از یک DVCS مانند Git ساده‌تر می‌شود اما باز هم Merge کردن دستی Branchهای مختلف و بررسی کدها یا رفع Conflict بین تغییرات توسعه‌دهنده‌های مختلف می‌تواند زمان‌بر و بسیار خسته کننده باشد.

حال به‌کمک CI تغییرات توسعه‌دهندگان با سرعت و اطمینان خاطر بیشتری Merge می‌شود و همچنین اگر Conflict در کدها وجود داشته باشد، رفع آن ساده‌تر خواهد بود.

CD (Continuous delivery) چیست؟

پس از CI، نوبت به Continuous delivery می‌رسد. طی این فرایند، release نرم‌افزار نهایی به‌صورت خودکار انجام می‌شود. هدف از continuous delivery این است که همیشه کدهایی داشته باشیم که قابلیت استقرار در حالت Production را داشته باشند.

CD (Continuous deployment) چیست؟

آخرین مرحله‌ی CI/CD pipeline را می‌توانیم Continuous deployment بدانیم که طی این فرایند، برنامه‌ی ما به‌صورت خودکار در محیط Production مستقر می‌شود.

در عمل درصورتی که تست‌ها در فرایند CI به‌طور کامل pass شده باشند و در فرایند Continuous delivery یک نسخه از نرم‌افزار release شده باشد، با اضافه شدن Continuous deployment به این فرایند، تغییرات توسعه‌دهنده در عرض چند دقیقه به‌دست کاربران نهایی می‌رسد.

تفاوت‌های CI و CD

شرح مراحل و نتایج نهایی هر مرحله در CI CD

CI همیشه به Continuous integration اشاره دارد که طی این فرایند، تغییرات جدید اعمال شده در کدها build و تست می‌شود و درصورتی که مشکلی وجود نداشته باشد، کدها Merge خواهند شد.

CD مخفف Continuous delivery و Continuous deployment است که گاها به‌دلیل شباهت این دو مفهوم، به‌جای یکدیگر استفاده می‌شوند. البته هر دو این مفاهیم مراحل بعدی pipeline هستند اما با جدا کردن این دو می‌توانیم محدوده‌ی مشخص‌تری از کارها را برای هرکدام در نظر بگیریم.

در Continuous delivery نسخه‌ای از نرم‌افزار را خواهیم داشت که آماده‌ی استقرار در محیط Production است و در Continuous deployment، نسخه‌ی نهایی نرم‌افزار از ریپازیتوری اصلی در محیط Production مستقر می‌شود. به این شکل پس از مرحله‌ی Continuous deployment، کاربران نهایی می‌توانند به آخرین تغییرات اعمال شده در نرم‌افزار دسترسی داشته باشند.

ابزارهای متداول در CI/CD

ابزارهای CI/CD می‌توانند در ساده‌تر کردن مراحل توسعه، تست و استقرار نرم‌افزار بسیار مفید باشند. Jenkins یکی از شناخته شده ترین ابزارهای متن‌باز برای CI/CD است. این ابزار به‌گونه‌ای طراحی شده که شما می‌توانید از آن برای مدیریت هرچیزی از یک سرور CI ساده تا یک CD hub کامل استفاده کنید.

Tekton Pipelines ابزار دیگری است که می‌توانیم آن را فریم‌ورک CI/CDبرای پلتفرم Kubernetes بدانیم. این ابزار به ما امکان پیاده‌سازی یک cloud-native CI/CD استاندارد بر روی کانتینرها را می‌دهد.

ابزارهای متن‌باز دیگری که می‌توانیم به آن‌ها اشاره داشته باشیم، عبارتند از:

  • Spinnaker: یک پلتفرم CD که به‌کمک آن می توانیم multicloud environments ایجاد کنیم.
  • GoCD: یک سرور CI/CD که بر modeling و visualization متمرکز است.
  • Concourse: ابزاری متن‌بار که کارهای continuous را انجام می‌دهد.
  • Screwdriver: یک build platform که برای CD طراحی شده.

همچنین ممکن است شما نام ابزارهای GitLab، CircleCI، Travis CI، Atlassian Bamboo را نیز شنیده باشید. البته ابزارهای دیگری مانند Ansible، Chef و Puppet یا Docker، rkt و cri-o نیز در DevOps وجود دارند که احتمالا می‌توانند بخشی از یک فرایند CI/CD باشند.

منبع: https://www.redhat.com/en/topics/devops/what-is-ci-cd

برچسب‌ها:

خدمات رایگان لیارا

۲.۵ گیگابایت فضای ذخیره‌سازی ابری رایگان

۲.۵ گیگابایت Object Storage سازگار با پروتکل S3 با دیسک‌های SSD به‌صورت رایگان دریافت کنید.

هاست رایگان برای دیتابیس‌

دیتابیس‌های MariaDB، PostgreSQL و Redis را فقط با یک کلیک و به‌صورت رایگان تهیه کنید.

سرویس DNS رایگان

به سادگی دامنه‌تان را اضافه کنید و به صورت رایگان رکورد‌های آن را مدیریت کنید.

۱۰۰ هزار تومان اعتبار اولیه

بعد از ثبت نام در لیارا مبلغ ۱۰۰ هزار تومان اعتبار هدیه دریافت می‌کنید که با توجه به ساعتی بودن هزینه سرویس‌ها، می‌توانید تمامی خدمات پولی را برای چندین هفته رایگان استفاده کنید.

ارسال ۱۰۰ ایمیل تراکنشی رایگان در هر ماه

در سرویس ایمیل لیارا شما می‌توانید تا ۱۰۰ ایمیل رایگان در هر ماه ارسال کنید و فقط برای بیش از آن هزینه پرداخت کنید. (به‌همراه دسترسی SMTP)

هاست رایگان برای انواع وبسایت

تفاوتی ندارد برای وبسایت خود از Node استفاده می‌کنید یا Laravel و Django، در لیارا می‌توانید به صورت کاملا رایگان آن را میزبانی کنید.

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

تجربه کار باliara_cloud@امروز خیلی خوب بود. یکی از سرویس هام رو منتقل کردم روش و راضیم. انقد سریع و جذاب کارم راه افتادم اصن باورم نمیشد! برعکس سرویس های PaaS دیگه با اون همه پیچیدگیشون. دمتون گرم
...

MohammadReza
liara testimonial
keikaavousi

بعد از بسته شدن @fandoghpaas و ناراحتی همه‌مون از اینکه یه سرویس خوب و صادق نمی‌تونه از پس هزینه‌ها بر بیاد، سرویسم رو منتقل کردم به پاس لیارا (https://liara.ir @liara_cloud) . تجربه راحت و خوب. تفاوت‌هایی داشت که کمی کار می‌خواست ولی تا الان کاملا راضی.

jadi
liara testimonial
jadi

یه خسته نباشید باید به تصمیمliara_cloud@بگم،
بعد از چندین روز سرکله زدن با سرویس های مشابه بالاخره تصمیم گرفتم لیارا رو امتحان کنم و باور نمیشه ۱۰ دقیقه بیشتر وقت نبرد،
دمتون گرم.

Arch
liara testimonial
EbadiDev

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

Ali Najafi
liara testimonial
me_ali_najafi

یکی از کارهای خوبی که جدیداً میکنم اینه که یه دیتابیس روی لیارا میسازم و به پروژه وصل میکنم اینطوری هم خونه و هم محل کار دیتابیس بروز رو دارم و راحت میتونم ادامه بدم کار روliara_cloud@

Navid
liara testimonial
1navid

عاشقliara_cloud@شدم درسته در حد AWS نیست ولی خب تجربه خوبی واسه پروژه های داخل ایران ارائه میده، میتونم رو CD هم اجراش کنم

Amir H Shekari
liara testimonial
vanenshi

همراه شما هستیم

در خصوص سفارش یا استفاده از سرویس‌ها سوالی دارید؟
تلفن واحد فروش:
۰۲۵-۳۳۵۵۷۶۱۹ (روزهای کاری ۹ الی ۱۷)
تلفن واحد فروش: ۳۳۵۵۷۶۱۹-۰۲۵ (روزهای کاری ۹ الی ۱۷)