در نوشته‌های قبلی سری بررسی و شرح تست جوئل درباره Source Control و همچنین build یک مرحله‌ای صحبت کردم. در این نوشته درباره موضوعی صحبت می‌کنم که شاید کمتر برای شرکت‌های ایرانی کاربرد داشته باشد، اما اطلاع از مزایای آن ممکن است شما را مشتاق کند تا درباره سیاست فنی در تیم نرم‌افزاری‌تان تجدید نظر کنید.

آیا دارای build روزانه هستید؟

build روزانه‌ای که جوئل اسپالسکی از آن صحبت می‌کند، در واقع مخصوص تیم‌هایی است که به طور مداوم در حال بهبود برنامه‌های جاری خود می‌باشند. این به معنی وجود تیم‌های نرم‌افزاری است که کار اعضای آن فقط و فقط کدنویسی و توسعه نرم‌افزار بر اساس roadmap های تعیین شده باشد. در چنین تیم‌هایی، شما همیشه لازم است مطمئن باشید که دارید روی یک نسخه سالم از نرم‌افزار کار می‌کنید.

می‌توانید به برنامه‌نویسانی که باعث شکست build می‌شوند، چیزی مثل این را بدهید تا حداقل برای همان روز شرمگین باشند!

اجازه بدهید موضوع را با یک مثال توضیح بدهم: وقتی شما از یک نرم‌افزار source control استفاده می‌کنید، هر زمان بخواهید روی فایل سورسی تغییری بدهید باید آن فایل را تحویل بگیرید (check out) و هر زمان که کارتان بر روی آن فایل به اتمام برسد آن را تحویل می‌دهید (check in) بعد از اینکه همه فایل‌ها check in شوند، در واقع نسخه جدیدتری از نرم‌افزار را خواهید داشت (که یا feature ای به آن اضافه شده یا bug برطرف شده یا هر دو) البته ممکن است بسته به نوع نرم‌افزار source control و نحوه مدیریت شما بر کد مراحل دیگری نیز نیاز باشد، مثلاً اگر در تیم شما branch هایی از سورس اصلی ایجاد شده باشد، در نهایت لازم است کدها را ادغام (merge) کنید. صرفنظر از روش کار با سورس‌ها، فایل‌های نهایی که ایجاد می‌شوند ممکن است باعث fail شدن پروسه build بشوند! یعنی برنامه‌نویسی کدی را check in کرده که روی سیستم خودش درست بوده و کار می‌کرده اما باعث fail شدن build‌ محصول نهایی شود و محصول نهایی دیگر یک نرم‌افزار سالم و stable (چنانکه در نسخه قبل بوده) نباشد. به این مساله شکستن buildهم گفته می‌شود. جوئل در این مورد پیشنهادی دارد و آن استفاده از build روزانه است. build روزانه یعنی build کامل روزانه اتوماتیک تمام source. خودش درباره پیشنهاد build روزانه برای رفع مساله شکستن build چنین توضیح می‌دهد:

“شكستن بیلد آنقدر بد (و رایج) است كه درست كردن بیلد روزانه کمک می‌كند كه چنین موضوعی ناشناخته نماند. در تیم‌های بزرگ، یک راه این كه مطمئن شوید كه چنین مشكلاتی در اولین فرصت برطرف شوند، این است كه بیلد روزانه را هر روز، هنگام ناهار انجام دهید.
همه تمامی check in هایی را كه می‌توانند قبل از رفتن به ناهار انجام می‌دهند. بیلد، زمانی كه همه برگشتند تمام شده است. اگر كه همه چیز درست است، كه فبحال! آخرین نسخه سورس توسط همه check out شده و كار ادامه پیدا می‌كند. اما اگر كه عمل بیلد با موفقیت روبرو نشده باشد، افراد با نسخه سالم قبلی به كار خود ادامه می‌دهند.”

مزایای build روزانه

اسپالسکی در نوشته دیگری به معرفی مزایای build‌ روزانه و روش اجرایی کردن آن می‌پردازد. خلاصه‌ای از آن مزایای build روزانه از نظر جوئل اسپالسکی به شرح زیر هستند: