آیا میتوانید در یک مرحله برنامهتان را build کنید؟
جوئل در توضیح این سوال میگوید منظور این است که برای ایجاد نسخه قابل تحویل به مشتری از آخرین سورس، چند مرحله وجود دارد؟
اگر برنامهای که تولید میکند صرفنظر از اینکه پلتفرم آن چیست و مشتری قرار است در چه محیطی آن را اجرا کند، برای ارائه نسخه جدید به بیش از یک build نیاز دارد، این پروسه مستعد اشتباه است. منظور از یک build این نیست که تمام نرمافزار در قالب یک پروژه باشد یا حتی در قالب یک solution. نرمافزار شما ممکن است دارای اجزای مختلفی باشد: یک دیتابیس داشته باشد، کدهای اجرایی برنامه در قالب فایل exe باشند و مثلاً کتابخانههایی نیز استفاده شوند یا وب سرویس داشته باشد و ... مهم این است که هر زمان بخواهید یک نسخه جدید به مشتری تحویل بدهید، یک اسکریپت بتواند کل مجموعه را build کند و نسخه قابل تحویل به مشتری را ایجاد کند.
در خصوص مساله build یک مرحلهای کار در مورد نرمافزارهایی که تحت ویندوز هستند سادهتر است. شما از یک برنامه installer استفاده میکنید و آخرین سورس را به همراه اجزای مختلف (مثل اسکریپتهای مربوط به دیتابیس یا کتابخانههای مورد استفاده و ...) در قالب یک package ارائه میدهید. اما در مورد نرمافزارهای تحت وب موضوع کمی متفاوت است. هر چند محصولاتی مانند Web Deploy وجود دارند اما برای نصب خود application (صرفنظر از قرار دادن فایلهای آن در وب سرور که میتواند با copy paste یا توسط یک نرمافزار ftp انجام شود) بهتر است دست به کار شوید و یک wizard ایجاد کنید.
در نظر داشته باشید مساله نصب و installer با مساله build جدا هستند، همچنان اگر قرار باشد برای ایجاد یک نسخه قابل نصب برای مشتری، مثلاً سورس را از source control گرفته و build کنید، بعد خودتان به database مراجعه کنید و اسکریپت تهیه کنید. بعد نمونه فایل config را از یک پوشه سیستمی بردارید و ... یعنی مراحل build شما بیش از یکی است و آن طور که جوئل میگوید در این پروسه احتمالاً دست به اشتباهات احمقانه خواهید زد.
گرچه تست جوئل از نظر تاریخ قدیمی محسوب میشود اما خواندن این توضیح مربوط به انتهای شرح سوال 2 خالی از لطف نیست. جوئل میگوید:
فقط به همین علت، آخرین شركتی كه در آن كار میكردم، از WISE به InstallShield تغییر كرد: لازم بود كه رویه ایجاد installer از روی یك script به صورت خودكار نیمه شبها توسط NT Scheduler اجرا شود و WISE چنین قابلیتی نداشت. (دوستان خوب ما در WISE به من اطمینان داده اند كه آخرین نسخه شان توانایی build های شبانه را دارد.)
مساله build شبانه و روزانه را در قسمت بعدی سری مطالب مربوط به تست جوئل که درباره سوال سوم (build روزانه) است با هم بررسی خواهیم کرد.