مفاهیم Build و Packaging
مفهوم
Build یعنی تبدیل کد منبع به خروجی قابل اجرا: کامپایل، باندلکردن فایلها، مدیریت وابستگیها و تولید نسخهی نهایی. بسته به زبان و اکوسیستم، شکل آن متفاوت است — از یک کامپایل ساده تا pipelineای که تستها را اجرا و خروجی نهایی را تولید میکند.
Packaging یعنی قرار دادن خروجی Build در قالبی قابل توزیع و نصب — به این خروجی Artifact میگوییم. چند مثال از اکوسیستمهای مختلف:
- فایل اجرایی یا کتابخانهی کامپایلشده
jarدر دنیای Java،wheelدر Python، بستهیnpmدر دنیای JavaScript- Docker Image — که در هفتهی پنجم به آن میرسیم
چرا مهم است؟
- تکرارپذیری — Build مناسب باید هرجا و هر بار، نتیجهی یکسان بدهد؛ «روی سیستم من کار میکرد» یعنی فرایند Build به درستی تعریفنشده است
- وابستگیها — پروژه به دهها بستهی دیگر وابسته است؛ ابزار Build تعیین میکند کدام نسخه از هر بسته استفاده شود و آنها را در خروجی نهایی قرار دهد
- نسخهگذاری — هر Artifact باید نسخهی مشخص داشته باشد تا بتوان دقیقاً گفت چه چیزی در محیطهای مختلف اجرا میشود؛ قالب متعارف Semantic Versioning است:
MAJOR.MINOR.PATCH - پایهی اتوماسیون — Build خودکار، از مهمترین پایههای هر Pipeline است؛ در هفتهی ششم آن را با GitHub Actions میسازیم
در این هفته فقط هدف یادگیری مفهوم است؛ ابزارهای build را در تمرینهای آینده یاد میگیریم.
منابع یادگیری
مقالات و مستندات
- Semantic Versioning — قرارداد نسخهگذاری؛ متن کوتاه و ارزشمند
- Semantic Versioning Cheatsheet — خلاصهای سریع از قواعد و شمارهگذاری نسخهها
- What is a Build Tool? — GeeksforGeeks — معرفی نقش و وظایف ابزارهای Build