راهاندازی CI/CD
مقدمه
امروزه تحویل پیوسته نرمافزار به عنوان یکی از رویکردهای موفق و فراگیر حوزه نرمافزار شناخته میشود. در این رویکرد، تغییرات کد به صورت مرحلهای و مکرر وارد چرخه ساخت، تست و استقرار میشوند. به دلیل ادغام و تست و تحویل پیوسته اجزا و سرویسها، سرعت ارائه محصول و رفع نیازمندیهای مشتریان (به عنوان مزیتی رقابتی) افزایش مییابد.
مفهوم Continuous Integration
نرم افزاری را در نظر بگیرید که دارای یک مخزن کد یا ریپو است. توسعهدهندگان چندینبار در روز، کد جدیدی را در این ریپو push میکنند. هر بار، مجموعهای از scriptها جهت ساخت و تست به صورت خودکار اجرا میشوند. این عمل، که به آن Continuous Integration میگویند، تاثیر چشمگیری در کاهش بروز خطا و افزایش سرعت ارائه محصول داشته و باعث میشود که تغییرات، در هر branch از ریپو، به صورت دورهای با تستها، دستورالعملها و استانداردهای برنامهنویسی موردنظر پروژه همراستا شوند.
مفهوم Continuous Delivery/Deployment
Continuous Delivery یک مرحله فراتر از Continuous Integration است. نه تنها، هر بار مراحل ساخت و تست اجرا میشوند، بلکه نرمافزار به شکل خودکار در محیطهای مختلف مستقر میشود. تفاوت Continuous Deployment با Continuous Delivery این است که الزاما در دومی استقرار به صورت خودکار صورت نمیگیرد و نیاز به مداخله انسانی جهت استقرار نسخه جدید هست.
شرکتها و پروژههای مختلف ابزارهایی را در راستا بهکارگیری روشهای بالا توسعه دادهاند. در این میان، اکوسیستم Github, بستر پرکاربرد و محبوبی را برای بهکارگیری از CI/CD در اختیار توسعهدهندگان نرمافزار قرار میدهد. امکانات GitLab Actions امکان پیادهسازی چرخههای CI/CD پیشرفته با کاراییهای گوناگون از جمله ساخت container image از منبع گیت، اجرای انواع تستها و استقرار نسخههای جدید نرمافزار در محیطهای توسعه را فراهم میکند.