اگر با مفهوم Continuous Integration آشنا هستید، می توانیم به این توافق برسیم که استفاده از آن یک الزام شده است. ابزارهای Continuous Integration زیادی وجود دارد، و در این مقاله، برخی از بهترین ابزارهای موجود در بازار و نحوه عملکرد آنها را بررسی خواهیم کرد.
پس از خواندن لیست این ابزارها، درک بهتری از ابزارهایی که در دسترس شما هستند خواهید داشت و ابزار مناسبی را برای خود انتخاب خواهید کرد. از سوی دیگر، اگر به برنامههای موبایل علاقه دارید، زیرمجموعهای از ابزارها وجود دارد که ممکن است برای شما مناسبتر باشد، بنابراین لیست برترین ابزارهای Continuous Integration موبایل را بررسی کنید.
بنابراین بدون هیچ مقدمه ای و بدون ترتیب اهمیت خاصی، فهرستی از 8 ابزار برتر Continuous Integration را به شما ارائه می کنم:
Buddy
Buddy یک ابزار CI مدرن و بصری است. Buddy با ساده نگه داشتن رابط کاربری، تجربه کاربری را در اولویت قرار داده و زمان لازم برای سرمایه گذاری در یادگیری ابزار را به حداقل می رساند (که چیز خوبی است).
انواع Wizard های پیکربندی، کار با ابزار را آسان میکنند و تا زمانی که نیاز به پیکربندی برخی از pipeline های پیچیدهتر نداشته باشید، عملاً نیازی به خواندن مستندات نیست.
و چه چیزی باعث ایجاد یک ابزار مدرن CI می شود؟ انواع ابزارها/integration های پشتیبانی شده، زمانهای سریع build، رابط کاربری هوشمند اما انعطافپذیر، گزینههای میزبانی مختلف (cloud/on-premises)، و برنامههای قیمتگذاری قابل تنظیم. Buddy تمام این موارد را انجام می دهد و پای خود را فراتر میگذارد.
اگرچه برخی از فناوریهایی که میخواهیم به آنها اشاره کنیم این روزها استانداردهای واقعی هستند، اما لازم به ذکر است که Buddy از Docker، Kubernetes، تمامی فریمورکها، زبانها و ارائهدهندگان cloud بزرگ از جمله PHP، Node، Python، .NET Core و Rails، و همچنین سرویسهای AWS و Google Cloud پشتیبانی میکند. شما همچنین می توانید برای ارائه نظارت و notification ها برای build های خود به Buddy اعتماد کنید.
ما با ابزارهای زیادی کار کردهایم، و ابزارهای بسیار خوبی در این لیست وجود دارد، اما از نظر میزان بصری و بهروز بودن آنها با روندهای مدرن، Buddy پیشتاز است.
حکم: مدرن ترین و بصری ترین ابزار موجود در این لیست، از تمام ویژگی هایی که ممکن است نیاز داشته باشید پشتیبانی می کند، اما در عوض، انعطاف پذیری یا تجربه کاربری را قربانی نمی کند.
وبسایت رسمی: Buddy
دسترسی: 7 روز trial به طور رایگان / پلنهای پولی
پلتفرم: Hosted Linux/Mac و On-premises Linux/Mac
TeamCity
TeamCity سرور CI بالغ است که از آزمایشگاه های شرکت JetBrains می آید. JetBrains در دنیای توسعه نرم افزار قدرت ایجاد کرده است و توسعه دهندگان در سراسر جهان از ابزارهای خود مانند WebStorm و ReSharper استفاده می کنند.
TeamCity تمام ویژگی ها را در نسخه رایگان خود ارائه می دهد، اما این نسخه به 100 build configuration و 3 تا build agent محدود می شود. build agent ها و build configuration های دیگر باید خریداری شوند. اخیراً JetBrains شروع به ارائه آزمایش ابری از TeamCity کرده است که در آن می توانید آن را برای یک پروژه، بدون زحمت نصب آن به صورت on-premises امتحان کنید. این نسخه آزمایشی، 60 روز طول می کشد تا به پایات برسد و بعد از آن می توانید پروژه را export کنید.
جدا از این، TeamCity بر روی پلتفرم های مختلف کار می کند و از طیف گسترده ای از ابزارها و فریم ورکها پشتیبانی می کند. پلاگین های زیادی در دسترس عموم هستند که هم توسط JetBrains و هم توسط اشخاص ثالث توسعه یافته اند.
با وجود اینکه TeamCity راه حل مبتنی بر جاوا است، در میان ابزارهای موجود در این لیست، بهترین پشتیبانی از دات نت را ارائه می کند. package های سازمانی مختلفی نیز وجود دارد که بر اساس تعداد agent هایی که شرکت شما نیاز دارد، اندازه گیری می شود.
حکم: به طور کلی راه حل عالی است، اما به دلیل پیچیدگی و قیمت آن، برای نیازهای سازمانی مناسب تر است.
وبسایت رسمی: TeamCity
نحوه دسترسی: رایگان برای 3 تا agent و 100 تا build configuration و دارای نسخه پولی enterprise
پلتفرم: Servlet container (On-premises), آزمایش ابری
Jenkins
Jenkins یک ابزار CI اوپن سورس است که به زبان جاوا نوشته شده است. زمانی که اوراکل Sun Microsystems را خریداری کرد، Jenkins به عنوان fork of Hudson پا به عرصه ظهور گذاشت. Jenkins یک ابزار CI از نوع cross-platform است و تنظیمات را هم از طریق رابط کاربری گرافیکی (GUI) و هم از طریق دستورات کنسول ارائه میدهد.
چیزی که Jenkins را بسیار منعطف می کند، feature extension از طریق پلاگینها است. لیست پلاگین های Jenkins بسیار جامع است و می توانید به راحتی پلاگین خود را اضافه کنید. Jenkins علاوه بر توسعه پذیری، به توزیع build ها و بارهای آزمایشی بر روی چندین ماشین به خود میبالد. Jenkins تحت مجوز MIT منتشر شده است، بنابراین استفاده و توزیع آن رایگان است.
Cloudbees همچنین یک hosted solution را در قالب Jenkins در Cloud ارائه می دهد.
حکم: یکی از بهترین راه حل های موجود، قدرتمند و در عین حال انعطاف پذیر. منحنی یادگیری این ابزار می تواند کمی کند باشد، اما اگر به انعطاف پذیری نیاز دارید، یادگیری نحوه استفاده از آن بسیار سودمند است.
وبسایت رسمی: Jenkins
نحوه دسترسی: رایگان
پلتفرم: Cross-platform
Travis CI
Travis CI یکی از قدیمی ترین hosted solution های موجود در بازار است و اعتماد بسیاری از مردم را به خود جلب کرده است. اگرچه بیشتر به دلیل hosted solution شناخته شده است، اما نسخه on-premise را نیز در قالب یک بسته سازمانی ارائه می دهد.
Travis CI برای همه پروژه های open source میزبانی شده در GitHub و برای 100 تا build اول رایگان است. چند پلن قیمت گذاری وجود دارد که می توانید از بین آنها انتخاب کنید، تفاوت اصلی بین این پلنها، در تعداد build های همزمانی است که می توانید اجرا کنید.
Build ها با استفاده از فایل travis.yml. پیکربندی میشوند که شامل task های build است که در اجرای build اجرا میشوند. این فایل، از انواع زبان های مختلف و اسناد خوب برای backup گیری از آنها پشتیبانی می کند.
حکم: یک راه حل بالغ که هم نوع hosted و هم نوع On-premises را ارائه می دهد که توسط بسیاری از تیم ها مورد علاقه، مورد استفاده قرار گرفته و بسیار مستند شده است.
وبسایت رسمی: Travis CI
نحوه دسترسی: رایگان برای plan های open-source و 100 تا build اول و دارای plan های های پولی برای بقیه موارد
پلتفرم: Hosted و On-premises
Bamboo
Atlassian یک شرکت متمرکز در ارائه ابزار برای تیم های توسعه نرم افزار است و ممکن است آنها را با ابزارهایی مانند JIRA و Bitbucket بشناسید. Bamboo در ابتدا هم solution های ابری و هم solution های On-premises را ارائه میکرد، اما در May ۲۰۱۶، نسخه ابری به لطف pipeline های Bitbucket (قابل دسترسی از طریق پنل سمت چپ حساب Bitbucket) متوقف شد.
Pipeline های Bitbucket با استفاده از قدرت build ،Docker های بسیار کارآمد و سریعی را ارائه میکند که به سرعت در حال رشد است و به جانشینی شایسته برای Bamboo Cloud تبدیل میشود.
Bamboo به مدت 30 روز رایگان است و پس از آن، دو plan برای تیم های کوچک و در حال رشد وجود دارد. Bamboo به عنوان ابزار Atlassian، از پشتیبانی بومی JIRA و BitBucket برخوردار است و حتی می توانید پیکربندی های Jenkins خود را به راحتی به Bamboo وارد کنید.
حکم: ابزار عالی On-premises CI که در ابتدا یک راه حل Cloud نیز ارائه می داد. Pipeline های Bitbucket جایگزین راه حل ابری شد. Pipelines یک ابزار مدرن و سریع برای CI ابری ادغام شده به داخل Bitbucket است. دارای یک دوره آزمایشی رایگان به مدت 30 روز و پس از آن دارای plan های پولی میباشد.
وبسایت رسمی: Bamboo
نحوه دسترسی: پولی با یک دوره trial رایگان
پلتفرم: On-premises
GitLab CI
GitLab CI بخشی جدایی ناپذیر از پروژه اوپن سورس Rails GitLab است که توسط شرکت GitLab inc معرفی شد. این سرویس در GitLab.com میزبانی می شود، یک سرویس میزبانی رایگان میباشد و مدیریت مخزن git را با ویژگی هایی مانند access control، ردیابی مشکل، code review و موارد دیگر ارائه می دهد.
GitLab CI به صورت یکپارچه با GitLab ادغام می شود و می تواند به راحتی پروژه ها را با استفاده از GitLab API جذب کند. اجراکنندههای GitLab که build ها را پردازش میکنند به زبان Go نوشته شدهاند و میتوانند بر روی Windows، Linux، OSX، FreeBSD و Docker اجرا شوند.
runner رسمی Go می تواند چندین کار را به طور همزمان اجرا کند و دارای پشتیبانی توکار Docker است. Gitlab CI با هر دو نسخه اوپن سورس GitLab Community Edition و GitLab Enterprise Edition ارائه می شود.
حکم: یک ابزار میزبانی فوق العاده با لیستی چشمگیر از ویژگی ها، هر دو solution های رایگان و سازمانی را ارائه می دهد.
وبسایت رسمی: GitLab CI
نحوه دسترسی: رایگان و پولی به همراه نسخه Trial
پلتفرم: Hosted و on-premises (میتواند برای شما بر روی Gitlab.com میزبانی شود)
CircleCI
یکی دیگر از جایگزین های ابری از شرکتی با همین نام ارائه میشود. CircleCI در حال حاضر فقط از GitHub پشتیبانی می کند و لیست زبان های پشتیبانی شده شامل جاوا، Ruby/Rails، Python، Node.js، PHP، Haskell و Scala است.
چیزی که CircleCI را از سایر ابزارها جدا می کند، نحوه ارائه service ها است. بلوک اصلی قیمت گذاری برای container” ،CircleCI” است. یک container رایگان است و می توانید هر تعداد پروژه که نیاز دارید روی آن بسازید. هنگامی که شروع به افزودن container های بیشتر (با قیمت ثابت هر کدام) کردید، می توانید سطح موازی سازی را متناسب با نیاز خود انتخاب کنید.
5 سطح موازی سازی وجود دارد (1x, 4x, 8x, 12x, و 16x). بنابراین، با شروع 16 container، می توانید حداکثر موازی سازی 16 برابر را در یک build به دست آورید. یا می توانید 4 build را روی 16 container با موازی سازی 4 برابر اجرا کنید. بستگی به خودتان دارد.
و آیا من اشاره کردم که CircleCI از Docker پشتیبانی می کند؟
حکم: ابزار انعطاف پذیر CI ابری که موازی سازی را تا 16 برابر ارائه می دهد. اگر به چیزی نیاز دارید که سریع ساخته شود این ابزار عالی است و پول بزرگترین مشکل نیست (می تواند تا 3150 دلار در ماه برسد).
وبسایت رسمی: CircleCI
نحوه دسترسی: رایگان و پولی به همراه نسخه trial
پلتفرم: Hosted
Codeship
اگر تا به حال، hosted solutions کافی نداشته اید، در اینجا راه حل دیگری وجود دارد.
Codeship در دو نسخه مختلف عرضه می شود. Basic و Pro. نسخه Basic یک سرویس Continuous Integration خارج از جعبه (out-of-the-box) را ارائه می دهد، اما پشتیبانی از docker ندارد و هدف اصلی آن ساخت برنامه هایی با workflow های مشترک از طریق رابط کاربری است. نسخه Pro انعطاف پذیری و پشتیبانی داکر بیشتری را ارائه می دهد.
نسخه Basic در چندین پکیج پولی ارائه می شود که در آن پکیجهای گران قیمت تر، قدرت موازی سازی بیشتری دارند. در نسخه حرفه ای، می توانید نوع نمونه و میزان موازی سازی را تا 20 برابر انتخاب کنید. قیمت آن ممکن است کمی گران دربیاید، اما برخی از تیم ها ممکن است به چنین قدرتی نیاز داشته باشند.
حکم: hosted solutions قدرتمند با پشتیبانی از docker، پلن های انعطاف پذیر مناسب برای تیم های کوچک و سازمانها به طور یکسان.
وبسایت رسمی: Codeship
نحوه دسترسی: رایگان برای 100 تا build در ماه و پرداخت پول برای بیشتر از آن
پلتفرم: Hosted
دیپلم افتخار: Codefresh
بسیاری از ابزارهای موجود در این لیست دارای پشتیبانی Docker هستند، اما Codefresh از ابتدا به طور خاص با در نظر گرفتن container ها طراحی و ساخته شده است.
Docker می تواند در ابتدا کمی سخت باشد، و بچه های .Codefresh inc به خوبی از آن آگاه هستند. علاوه بر کار با فایلهای docker موجود، میتوانید از بین چندین الگوی مختلف، یکی را انتخاب کنید تا انتقال پروژه خود به کانتینرهای Docker را آسان سازید. UI تمیز و مشهود است، تقریباً نیازی به تجزیه اسناد برای شروع استفاده از آن نیست.
دلیل اینکه این ابزار CI شایستگی قرار گرفتن در لیست را دارد به دلیل ویژگی است که کمی مرا شگفت زده کرده است. و این ویژگی این است که تصاویر شما را به یک محیط مانند صحنه راه اندازی می کند. وقتی build به پایان رسید، می توانید تصویر را اجرا کنید تا ببینید آیا کار می کند یا خیر! این به طور موثر به این معنی است که شما بدون نیاز به ارائه ماشین های مجازی اضافی یا استقرار چیزی، یک محیط صحنه سازی را دریافت می کنید.
Codefresh هنوز بسیار جوان است و فضایی برای بهبود و ویژگیهای جدید دارد (مثلاً قالب اصلی دات نت و گزینههای استقرار بیشتر)، اما با container ها به عنوان یک شهروند درجه یک رفتار میکند و همین موضوع، آن را به یک راهحل ایدهآل برای هر تیمی تبدیل میکند که قصد استفاده از Docker را دارد.
حکم: ابزاری آسان برای استفاده با container های Docker در هسته آن و یک ویژگی بسیار خوب برای راه اندازی تصاویر ساخته شده Docker به محیط میزبان.
وبسایت رسمی: Codefresh
نحوه دسترسی: رایگان برای 200 تا build در ماه، 5 تا build همزمان و 1 محیط میزبانی شده، با پرداخت هزینه برای موارد دیگر.
پلتفرم: Hosted و On-Premises از طریق نمودارهای Kubernetes و Helm
بنابراین، ابزار Continuous Integration عالی برای شما و تیمتان چیست؟
هنگام انتخاب ابزار CI مناسب برای پروژه های خود چندین نکته وجود دارد که باید مدنظر داشته باشید.
solution های On-premises انعطاف پذیری زیادی در فرآیند build ارائه می دهند و مستندات را به صورت محلی ذخیره می کنند. این ممکن است برای شما مهم باشد یا نباشد، اما در برخی موارد و برای برخی شرکت ها، ممکن است اجباری باشد.
از سوی دیگر، hosted solution ها، راهاندازی بدون دردسر و مقیاسپذیری بیشتری را ارائه میدهند، زیرا برای میزبانی آنها به سختافزار نیاز ندارید.
نکته مهم دیگر پشتیبانی از Docker است. Docker روشی را که ما برنامه های خود را توزیع می کنیم را متحول کرد و به چیزی تبدیل شده است که نباید نادیده بگیرید. اگرچه اکثریت قریب به اتفاق ابزارها از Docker پشتیبانی میکنند، برخی آن را جدیتر از دیگران میدانند.
و آخرین جنبه که اغلب نادیده گرفته می شود، رابط کاربری است. استفاده از برخی از ابزارهای این لیست را بسیار ساده تر از سایر ابزارها دیدم. شما نمی توانید با آگاهی کامل بگویید که UI مهم نیست زیرا یکی از نقش های اصلی هر ابزار خوب CI، آسان کردن فرآیند build است. نباید سخت یا پیچیده باشد.