Monat: آبان ۱۳۹۶
شش قدم تا مدیریت موفقتر انتشار نرمافزار با جیرا
یکی از سوالات مهمی که هر مهندس نرمافزاری لازم دارد تا به آن پاسخ دهد این است که «چه زمانی تغییرات جدید منتشر خواهند شد؟». البته دانستن پاسخ این سوال تنها با مسئول توسعهٔ نرمافزار (دولوپر) نیست. رهبر تیم لازم است که بداند چه زمانی آمادهٔ رفتن به مرحلهٔ بعدی هستند. مدیر پروژه نیز لازم است از این موضوع مطلع باشد تا بتواند برای اطلاعرسانی در خصوص ویژگیهای جدید برنامهریزی کند. جدای از این توسعهدهندهٔ نرمافزار برای دریافت بازخورد کارهای انجام شده لحظه شماری میکند. به طور کلی میتوان پاسخ این سوال را یک تلاش تیمی دانست. در دنیای دواپس (DevOps)، تغییرات جدید چند مرحله در روز با برنچ master ترکیب (Merge) میشوند، ولی دانستن این که تغییرات جدید چه زمانی آماده میشوند چندان آسان نیست. توسعهدهندگان کنترل کامل انتشار تغییراتشان برای کاربران نهایی را در دست دارند، همین امر نیز اهمیت قابلیت پیگیری تغییرات (Tracking) را دو چندان میکند. از این طریق است که تیمهای IT و عملیات (Operation) میتوانند در زمان رویدادهای غیرمنتظره دقیقا مشخص کنند که کدام تغییرات در به وجود آمدن مشکلات تأثیرگذار بودهاند. خبر خوب این است که بخش عمدهای از این روند میتواند توسط نرمافزارهای Jira و یا Jira Service Desk و به روش خودکار انجام شود. در ادامه ۶ قدم مفید برای بهره گیری از پلتفورم جیرا در جهت مدیریت بهتر انتشارهای نرمافزار را با هم مرور میکنیم. ۱) با استفاده از مسائل (Issues) جیرا، تغییرات را مشخص کنید تعریف یک تغییر چیست؟ آیا میتوان یک کامیت (Commit) را تغییر دانست؟ یا هر تغییر میتواند شامل چند کامیت مجزا باشد؟ عموما پیادهسازی یک تغییر قابل انتشار شامل چند کامیت مجزا میباشد. یکی از پر استفادهترین روشهای مدیریت تغییرات در نرمافزارهای مدیریت نسخه (Version Control) ساخت برنچ ویژگیهای جدید است. وقتی که کار بر روی آنها به اتمام رسید نیز مجموعهٔ تغییرات ثبت شده در برنچ با استفاده از یک درخواست بررسی (Pull Request) با برنچ Master ترکیب میشوند. یک درخواست بررسی تعریف دقیقتری از یک واحد از تغییرات ارائه میکند. با این حال معمولا تغییرات کوچک اما مهم دیگری نیز لازم است تا بعد از ثبت درخواست بررسی بر روی برنچ اعمال شوند. برای مثال، ممکن است رنگ یک جزء از رابط کاربری نیاز به تغییر داشته باشد و یا جملهبندی یک بخش از رابط بتواند با کمی تغییر بهتر شود. در چنین شرایطی ممکن است شما چند «درخواست بررسی» داشته باشید که نهایتا یک تغییر منطقی را شامل میشوند. به جای ترکیب تمام این درخواستها با یکدیگر، شاید بهتر باشد که تمامی آنها را به عنوان یک واحد از تغییرات و در کنار هم ثبت کنید. اینجاست که سیستم مسائل جیرا وارد میشود. جیرا نه تنها روند کارهای شما را تعقیب میکند، بلکه میتواند اشخاص مرتبط با موضوع را از ثبت تغییرات جدید مطلع سازد. هر شخصی در سازمان شما میتواند مسائل جیرا را زیر نظر (Watch) داشته باشد تا از ثبت دیدگاههای جدید و یا تغییر در روند انجام آنها بلافاصله مطلع گردد. ۲) روند کاری (Workflow) انتشار نرمافزارتان را در جیرا تعریف کنید به طور پیشفرض، روندهای کاری مرتبط با مدیریت انتشار نرمافزار در جیرا پیادهسازی نشدهاند. اما از آنجایی که پلتفورم جیرا قابلیت انعطافپذیری بالایی دارد، کاربران را قادر میسازد تا حالتهای (Status) بیشتری را برای پیگیری وضعیت انتشار نرمافزار تعریف کند. روند کاری پیشفرض جیرا به صورت زیر شامل سه وضعیت میباشد: حالا بیایید چند وضعیت جدید به این ترکیب اضافه کنیم. برای پوشش مسئلهٔ پیش روی ما، لازم است به جای انتقال بلافاصله از حالت «در حال انجام» (In Progress) به وضعیت «انجام شده» (Done) وضعیتهای زیر نیز تعریف شوند: در حال انتظار برای انتشار (Awaiting Release): به این معناست که کار مربوطه به صورت کامل انجام شده و حالا آمادهٔ انتشار است. منتشر شده برای تست (Released to Staging): مشخص میکند که روند انتشار برای محیط تست به صورت کامل انجام شده است. منتشر شده برای محیط اصلی (Release to Production): هورا! تغییرات جدید به دست کاربر نهایی رسیده است. در تصویر زیر نمایی از چگونگی افزودن این وضعیتها روی روندکاری پایهٔ جیرا را مشاهده میکنید. برای راهنمایی بیشتر در این خصوص میتوانید با تیم پشتیبانی پارسدانیسان تماس حاصل فرمایید: ۳) بردهای چابک (Agile) را تنظیم کنید وقتی که روندکاری جدیدتان را پیادهسازی کردید، به بخش تنظیمات پروژههای مورد نظرتان وارد شوید و روند کاری جدید را برای آنها فعال کنید. اگر توسعهدهندگانتان از بردها استفاده میکنند، وضعیتهای جدید را به بردهایشان اضافه کنید. یک راه آسان برای انجام این کار این است که به صفحهٔ تنظیمات برد وارد شده و روی بخش ستونها (Columns) کلیک کنید. در اینجا میتوانید وضعیتهای جدید را بکشید و در ستون Done رها کنید: حالا، هر زمانی که توسعهدهندهای بخواهد کارت مسئلهای را از برد «در حال انجام» به «انجام شده» منتقل کند، با پیغامی روبرو خواهند شد که از آنها میخواهد وضعیت درست را در این خصوص مشخص کند. اینجاست که میتوانند وضعیت انتشار یک ویژگی را مشخص کنند: ۴) مسائل جیرا را با انتشارها مرتبط کنید با فرض بر این که انتشارها از طریق یک مخزن گیت (Git Repository) انجام میگیرند، میتوانیم از تاریخچهٔ کامیتها به منظور اطمینان یافتن از انتشار تغییرات درست بهره بگیریم. برای این کار، لازم است که بتوانیم کامیتها را به مسئلهٔ مربوطه در جیرا متصل کنیم، تا بتوانیم بفهمیم که کدام تغییر با کدام مسئله در ارتباط است. یک راه برای دستیابی به این منظور، افزودن کلید مسئلهٔ جیرا (Issue Key) به اول پیغام ثبت شده به همراه کامیت است: git commit -am ‘PROJ-255: change publish button colour to blue’ ممکن است بگویید که این کار مقداری سربار اضافه به روند توسعه اعمال میکند، اما مرتبط کردن مسئله با هر کامیت یک Best Practice محسوب میشود، چرا که قابلیت ردگیری درست و آسان تغییرات را فراهم میکند. راه حل جایگزین دیگر این است که کلید مسئله را در نام برنچ شامل تغییرات وارد کنید که روند مرتبط سازی کلید و کامیت مربوطه را در آینده آسانتر میکند. نکته: اگر با استفاده از جیرا برنچ خود را ایجاد کنید، به صورت خودکار نام مسئله برای برنچ جدید انتخاب میشود. ۵) تمامی تغییرات مرتبط برای انتشار بعدی را پیدا کنید حالا به مهمترین مرحله از […]
آشنایی با ابزار بیتباکت از اطلسیان
در تیمهای توسعهٔ نرمافزار لازم است تا کدهای مرتبط با پروژه به صورتی مدیریت شده و امن بین اعضای تیم به اشتراک گذاشته شود تا اعضا بتوانند به صورت همزمان برای پیشبرد پروژه فعالیت کنند. ابزارهای ورژن کنترل برای همین منظور توسعه داده شدهاند که علاوه بر امکان اشتراک کد، قابلیتهایی نظیر تاریخچهٔ توسعه و امکان ایجاد انشعابهایی (Branch) جهت بررسی ایدههای جدید را فراهم میکنند. با گسترش نیازهای تیمهای نرمافزاری امنیت انتشار کدها و قابلیت دسترسی از هر جایی بر مبنای بستر اینترنت، باعث به وجود آمدن مخازن انتشار کدی نظیر بیتباکت، گیتهاب و … شد. بیتباکت مخزن کد توسعه داده شده توسط شرکت اطلسیان است که در دو نوع هاست شده (مناسب استفادهٔ عموم) و نسخهٔ قابل نصب روی سرور (مناسب برای تیمهایی که امنیت دسترسی به مخازن از اولویت بالایی برای آنها برخوردار است) منتشر میشود. همچنین بیتباکت قابلیت پشتیبانی از کدهایی که با استفاده از ورژن کنترلهای Git و یا Mercurial توسعه داده شدهاند را داراست. از جمله ویژگیهایی که بیتباکت به همراه دارد میتوان به موارد زیر اشاره کرد: پروژهها: قابلیت دسته بندی مخازن نرمافزاری مرتبط با هر پروژه را به صورت جداگانه فراهم میکند. قابلیت تطابق کدها (Diff): که با استفاده از تکنولوژیهای وب به زیبایی هر چه تمامتر امکان مشاهدهٔ تغییرات ایجاد شده در هر کامیت را جهت بازبینی فراهم میکند. قابلیت ثبت درخواست بررسی (Pull Request): این قابلیت به اعضای تیم اجازه میدهد تا قبل از ادغام (merge) کردن کدهایی که برای یک ویژگی جدید توسعه داده شده، آن را با دیگر همکاران خود به اشتراک گذاشته و در صورت نیاز به بازبینی و تبادل نظر در خصوص کدها بپردازند. بیتباکت همچنین اجازهٔ ثبت دیدگاه در هر قسمت از کدهای مورد بحث را به زیبایی فراهم مینماید که میتواند در فرآیند بازبینی پروژه بسیار کمک کننده باشد. امکان مدیریت دسترسیها در برنچها: این قابلیت امکان حصول اطمینان از اشتراک انشعابهای کد (Branch) با اشخاص مرتبط با هر قسمت را مهیا میکند. قابلیت جستجو در محتوای کد: این امکان را فراهم میآورد تا به سرعت به نتیجهٔ مورد نظر در جستجوهای خود دست یابید. سیستم جستجوی بیتباکت نسبت به جستجو برای کدهای نرمافزاری بهینه شده و بر همین اساس قابلیت تولید نتایج بهتری را در هنگام جستجو فراهم میکند. پایپلاینهای انتشار (Deployment pipeline): که از دیگر ابزار توسعه داده شده توسط اطلسیان به نام بامبو (که قبلا در همین وبلاگ معرفی شد) بهره میبرد، امکان تست و انتشار خودکار مخازن کد را فراهم میکند. پشتیبانی از فایلهای بزرگ در گیت (LFS): در صورتی که کاربر ابزار گیت باشید، احتمالا از نقطه ضعف این ابزار در زمان ثبت فایلهای بزرگ روی آن خبر دارید. قابلیت LFS توسعه داده شده برای بیتباکت جهت پوشش این ضعف در ورژن کنترل گیت آماده شده و امکان ثبت فایلهایی با حجم بالاتر از ۵۰ مگابایت را فراهم میکند. امکان همگامسازی با دیگر ابزارهای توسعه مرتبط از طریق Webhook که به صورت عمده در تیمهای نرمافزار مورد استفاده قرار میگیرند. امکان همگامسازی با دیگر ابزارهای مرتبط توسعه داده شده توسط شرکت اطلسیان نظیر جیرا، هیپچت و …. شاید امروزه معروفترین ابزار مخزن کد روی اینترنت، گیتهاب باشد. از همین رو قصد داریم در ادامه به مقایسهٔ بیتباکت با این ابزار بپردازیم: ویژگی بیتباکت گیتهاب ورژنکنترلهای پشتیبانی شده Mercurial, Git Git مخازن کد عمومی (public) در نسخهٔ رایگان نامحدود نامحدود مخازن کد خصوصی (private) در نسخهٔ رایگان نامحدود صفر تعداد کاربران برای نسخهٔ رایگان ۵ کاربر همزمان نامحدود قابلیت نصب بر روی سرورهای سازمانی دارد ندارد شرکت پارسدانیسان شرکت پارسدانیسان از سال ۱۳۹۱ با بهرهگیری از نیروهای متخصص در این زمینه به ارائهٔ دورههای آموزشی ابزار بامبو و دیگر ابزارهای مرتبط پرداخته است. همچنین خدمات مشاوره و پشتیبانی حرفهای تمامی محصولات ارائه شده از طرف شرکت اطلسیان را به صورت رسمی در کشورمان ایران ارائه میکند.