تحویل پیوسته
تحویل پیوسته یا (CD)، رویکردی در مهندسی نرم‌افزار است که تیم‌ها را قادر می‌سازد نرم‌افزار تولید شده را به روشی سریع و مطمئن برای انتشار و تحویل آماده کنند. این فرایند از لحظه اضافه شدن یا تغییر کد در source control شروع می‌شود و شامل ساخت (build)، تست، پیکربندی و انتشار در محیط‌های مختلف تست و محیط عملیات می‌شود. این مفهوم در فارسی به «تحویل مداوم» یا «تحویل مستمر» ترجمه شده‌است.
به عبارت دیگر: تحویل مستمر توانایی اعمال تغییرات در محیط عملیات در هر لحظه با روشی سریع و مطمئن و به‌طور کاملاً پایدار می‌باشد. این تغییرات شامل همه انواع آن از جمله تغییرات پیکربندی در نرم‌افزار، زیرساخت و پلتفرم، افزودن ویژگی‌های جدید، رفع باگ و خطاها می‌شود.
به وسیله محیط‌های تست مختلف، می‌توان یک Deployment pipeline ایجاد کرد تا بتوان یک زیرساخت جدید را به‌طور اتوماتیک ایجاد کرد و نرم‌افزار را روی آن منتشر کرد. منظور از زیرساخت سرور، سیستم عامل، سرویس دهندهٔ وب، virtualization، شبکه ، پیکربندی و تنظیمات آن‌ها می‌باشد. به کمک این محیط‌های متوالی می‌توان فعالیت‌های طولانی یکپارچه‌سازی، تست عملکرد و تست‌های پذیرش نهایی را به تدریج انجام داد. فرایند تحویل پیوسته در Deployment pipeline با یکپارچه‌سازی مداوم شروع می‌شود و با انتشار و پایان تست در هر محیط، انتشار و تست در مرحله بعدی شروع می‌شود. مجموع این کارها به صورت حلقه‌های یک زنجیر در پشت سر هم قرار گرفته و فرایند تحویل پیوسته را تشکیل می‌دهند. تحویل پیوسته و دواپس از نظر معنایی به هم مشابه‌ هستند و عموما با هم ترکیب می‌شوند، اما به طور کلی این دو مفهوم با یکدیگر متفاوت هستند. دواپس دامنه تعریف گسترده‌تری دارد و حیطه اصلی کار آن تغییر فرهنگ‌های سازمانی به‌ویژه در مفهوم همکاری تیم‌ها مختلف درگیر در تحویل نرم‌افزار (تیم اجرایی، تیم توسعه، مدیریت و غیره) می‌باشد. از دیگر مسئولیت‌های دواپس خودکار سازی فرآیند‌های تحویل نرم‌افزار می‌باشد. در سوی دیگر اما تحویل پیوسته، رویکردی برای خودکار کردن تحویل، گرد‌آوری پروسه‌های مختلف و اجرای سریعتر و مکرر آنها می‌باشد. بنابر آنچه بیان شد: دواپس محصور تحویل پیوسته است و تحویل پیوسته (CD) مستقیم به دواپس منتقل می‌شود. تحویل مداوم ، توانایی ارائه نرم افزاری است که می تواند در هر زمان از طریق انتشار دستی به کار گرفته شود. این در تضاد با استقرار پیوسته است که از گسترش خودکار استفاده می کند. به گفته مارتین فاولر ، استقرار مداوم به تحویل مداوم نیاز دارد. ادبیات دانشگاهی بین دو روش با توجه به روش استقرار تفاوت قائل می شود. دستی در مقابل خودکار.
تحویل پیوسته به وسیله خط لوله‌ها فعال و پیاده‌ می‌شود. خط لوله‌ها سه هدف دارند: قابل مشاهده بودن، بازخورد، استقرار پیوسته.
قابل مشاهده بودن: تمام مراحل استقرار از جمله ساخت، استقرار، تست و انتشار به منظور همکاری، برای اعضای تیم قابل مشاهده است.
بازخورد: اعضای تیم به محض اتفاق افتادن خطا آنها را مطالعه می‌کنند و تلاش می‌کنند که هرچه سریعتر مشکل را حل کنند.
استقرار پیوسته: با استفاده از یک فرايند کاملا خودکار، هر نسخه از محصول در هر محیط به صورت خودکار نصب شود.
در تحویل پیوسته، انتقال کد و استقرار آن در محیط عملیاتی به صورت خودکار انجام می‌شود. به وسیله این ابزار‌ها میتوان خط لوله مناسب برای استقرار را ایجاد کرد. انواع ابزار‌هایی که قسمت‌های مختلف این عملیات را انجام می‌دهند عبارت‌اند از: یکپارچه‌سازی مداوم، خودکار‌سازی انتشار برنامه، مدیریت چرخه عملکرد برنامه.
جنکینز یکی از ابزار‌های پرکاربرد برای ایجاد خط‌ لوله‌های تحویل پیوسته است.
تحویل مداوم ، مفهوم رایج خط لوله استقرار را به عنوان پیشگیری از خطای سهوی و ناب در نظر می گیرد: مجموعه‌ای از اعتبارسنجی‌ها که یک نرم‌افزار در مسیر عرضه‌اش باید سپری‌ کند. کد درصورت نیاز باید کامپایل شود و پس از آن هر دفعه که تغییری در مخزن ثبت ثبت می‌شود توسط سرور ساخت (build) بسته‌بندی شود. در مرحله آخر نیز این کد باید توسط تکنیک‌های متنوع تست شود تا از آمادگی ‌آن برای عرضه اطمینان حاصل شود.
توسعه دهندگان که به یک دوره چرخه طولانی عادت کرده اند ممکن است هنگام کار در محیط CD نیاز به تغییر طرز فکر خود داشته باشند. در این راهکار مهم است که بدانیم هر قطعه کدی که در مخزن ثبت می‌شود ممکن است هر لحظه به کاربران عرضه شود. الگوهایی مانند ضامن ویژگی ها می توانند برای انجام زودهنگام کد که هنوز برای استفاده توسط کاربران نهایی آماده نیست ، بسیار مفید باشند.
برخی از مزایای تحویل پیوسته: برخی از موانع تحویل پیوسته:هشت چالش بیشتر برای تطابق توسط چن مطرح و شرح داده شد. این چالش ها در زمینه ساختار سازمانی، فرایندها، ابزارها، زیرساخت‌ها، سیستم‌های قدیمی، معماری تحویل پیوسته، آزمایش مداوم نیازمندی‌های غیر عملکردی و بهینه سازی اجرای آزمون است.