آموزش Gradle – اهمیت Project Automation
در سری مقالات آموزش Gradle قصد داریم تا بخشها و ویژگیهای Gradle را مورد بررسی قرار دهیم. سیر مقالات بر اساس دسته بندی که در سایت اصلی Gradle قرار دارد٬ خواهد بود و سعی میشود در هر مقاله به توضیح جامعی پیرامون هریک از بخشهای آن بپردازیم.بیشتر محتویات این بخش برگرفته از کتاب Gradle in Action است.
Gradle یک build automation system است. در گذشته Maven را که یکی از build automation system ها است را معرفی کردیم. برای مشاهده مقالات آموزش Maven به اینجا مراجعه کنید.
در ابتدا باید این موضوع را مورد بررسی قرار دهیم که چرا باید از build automation system ها استفاده کنیم. در این مقاله به بررسی این مورد میپردازیم.
در ابتدا باید مزیتهای استفاده از project automation ها را بررسی کنیم. یکی از مواردی که امروزه بسیار حائز اهمیت است٬ سرعت و تناوب عرضه محصول به بازار است. فرآیند project automation چنین درخواستی را پاسخ میدهد. اکنون به مزیتهای project automation میپردازیم.
فرآیند های خودکار
هر فرآیند که میتواند به صورت خودکار انجام شود٬ باید در یک فرآیند خودکار قرار گیرد. انجام یکسری فرآیند ها به صورت گام به گام در تولید نرمافزار زمان بر است و همچنین احتمال خطا در آن وجود دارد. یک برنامه نویس باید وظایف مهمتری نسب به جابجایی یک فایل از یک پوشه به پوشه دیگر را بر عهده داشته باشد. یک برنامه نویس یک انسان است و علاوه بر اینکه انجام چنین فرآیند هایی به صورت غیرخودکار زمان غیر مشخصی از یک برنامه نویس میگیرد٬ احتمال بروز خطا را افزایش میدهد.
تکرار متناوب
یکسری از فرآیند ها نیاز است تا بر اساس نظم مشخصی در بازه های زمانی کوتاهی تکرار و انجام شوند. برای مثال در یک پروژه نرم افزاری ابتدا کل compile میشود٬ سپس تست ها اجرا میشوند و در صورت موفقیت آمیز بود این مراحل٬ یک نسخه قابل انتشار از برنامه ایجاد میشود. چنین فرآیندی یک ترتیب مشخص دارد و ممکن است در بازه زمانی مشخصی چندین بار تکرار شود. بنابراین توسعهدهنده باید هربار یکسری فرآیند های تکراری را بانظم مشخص انجام دهد.
تسهیل در فرآیند تولید
اگر بخواهیم از محیط های توسعه برای گرفتن خروجی برنامه استفاده کنیم٬ اعمال پردازش برنامه را به یک IDE محدود میکنیم. بنابراین هر شخص یا سیستمی که بخواهد از کد ها استفاده کند و خروجی از برنامه بگیرد٬ باید ابتدا محیط کد نویسی را بر روی سیستم خود نصب کند.علاوه بر این موضوع٬ ممکن است نیاز به نسخه مشخصی از محیط توسعه و یا ابزار جانبی داشته باشد. Build automation system ها به صورت command line قابل استفاده هستند. بنابراین در هنگام گرفتن خروجی٬ نیازی به داشتن IDE ندارند. چنین ویژگی باعث میشود تا ابزار continues delivery و continues integration هنگام استفاده از کد ها مشکلی نداشته باشند.
اکنون که میزان مفید بودن automation project را درک کردیم٬ به انواع آن میپردازیم.
On-Demand builds
همانطور که از نام آن مشخص است٬ هر زمانی که نیاز به یک build از پروژه باشد٬ چنین حالتی اجرا میشود. برای اجرای چنین فرآیندی٬ شخصی که این درخواست را دارد از سیستم خود چنین فرمانی را صادر میکند. معمولاً بر اساس نیاز شخص٬ ابتدا کد ها با Version Control System چک میشود و کد هایی که برای نسخه مورد نظر نیاز است استخراج میگردد. برای مثال یک توسعهدهنده با اجرای یک script از طریق command line٬ ابتدا کد های مربوط به نسخه مد نظر را دریافت میکند٬ سپس کد ها را کامپایل کرده و پس از اجرای تست های مربوطه٬ نسخه قابل اجرا برایش فراهم میگردد. تصویر زیر این فرآیند را نشان میدهد.
Triggered builds
یکی از مفاهیم مهم در agile این است که بازخورد سریعی نسبت به تغییرات دریافت کنیم. بر این اساس نیاز است تا وضعیت سلامت پروژه را در هر تغییر بررسی کنیم. به این ترتیب نیاز است تا سیستم به صورت خودکار٬ پس از هربار تغییر بر روی version control system یک بار عمل ایجاد پروژه را به صورت خودکار صورت دهد. روال چنین فرآیندی به این صورت است که پس از هر بار تغییر بر روی version control system یک بار فرآیند build انجام میشود تا از صحت کارکرد پروژه اطمینان حاصل شود. برای مثال اجرای تست ها به صورت خودکار یکی از این فرآیند ها است. تصویر زیر این فرآیند را نشان میدهد.
Scheduled builds
چنین فرآیندی برای دریافت مستندات و همچنین گزارش از پروژه مناسب است. در چنین فرآیندی در یک زمان مشخص و یا بازه های زمانی مشخص و از پیش تعریف شده٬ پروژه به صورت خودکار ایجاد میشود. معمولاً برای چنین فرآیند هایی٬ از یک سرور اختصاصی و جدا استفاده میشود. تصویر زیر این فرآیند را نمایش میدهد.
همانطور که در ویژگیهای project automation گفته شد٬ نیازی به IDE ندارد و میتواند به صورت command line اجرا شود که باعث میشود به راحتی با ابزار continues integration ارتباط برقرار کند. برای scheduled build و trigger build معمولاً ازcontinues integration استفاده میکنند.
در این مقاله قصد بر این شد تا میزان اهمیت project automation را بررسی کنیم.
سری مقالات Gradle ادامه دارد.
با ما همراه باشید.
دیدگاهتان را بنویسید
برای نوشتن دیدگاه باید وارد بشوید.