یک محصول نرمافزاری، مراحل مختلفی چون برنامهریزی، توسعه، تست و انتشار را طی میکند تا به دست مشتریان خود برسد. در این بین، فرآیندها، ابزارها، استانداردها و متدولوژیهای مختلفی برای ایجاد یک محصول هر چه بهتر مورد استفاده قرار میگیرد.
جیرا به عنوان یکی از پرکاربرترین ابزارهای مدیریت پروژههای نرمافزاری است که قابلیتهای بسیار خوبی در این زمینه فراهم کرده است. شرکتهای بسیار زیادی در سراسر دنیا از نرمافزار جیرا برای مدیریت و پیگیری کارهاو پروژهها خود استفاده میکنند. اینشرکتها از نرمافزار جیرا برای برنامهریزی، پیگیری، ثبت زمان کارها و برنامهریزی کارهای پیشرو استفاده میکنند. این امر باعث شده ابزارهای زیادی قابلیت یکپارچهشدن با نرمافزار جیرا را فراهم کنند.
توسعهدهندگان نرمافزار از ابزارهای مختلفی برای نگهداری و مدیریت کدهای خود استفاه میکنند. یکی از بهترین ابزار در این زمینه بیتباکت (Bitbucket) است. نرمافزار بیتباکت (Bitbucket) که یک نرمافزار بسیار کاربری در زمینه Source Controlling بر پایه Git است به صورت گستردهای در شرکتهای سرتاسر دنیا مورد استفاده قرار میگیرد.
ارتباط تنگاتنگ مراحل برنامهریزی و توسعه یک محصول، لزوم وجود بستری مناسب و یکپارچه برای این امور را میطلبد. نرمافزارهای جیرا و بیتباکت که از برترین نرمافزارهای این دو حوزه هستند، قابلیت یکپارچهسازی کامل را فراهم کرده اند و با یکپارچهسازی نرم افزار جیرا و بیت باکت امکان ترکیب فرآیندهای مدیریت و فرآیندهای توسعه نرمافزار فراهم خواهد شد.
نرمافزارهای بیت باکت و جیرا هر دو محصول شرکت Atlassian هستند و این امر فرآیند یکپارچهسازی این دو نرم افزار را بسیار ساده کرده است. هر دو نرمافزار کاملا بالغ هستند و برای کمک به توسعهدهندگان نرمافزار تمرکز کرده اند.
در این مقاله قصد داریم نحوه یکپارچهسازی این دو نرمافزار پرکاربرد را شرح دهیم و نحوه کمک کردن این دو نرمافزار به تیمهای مدرن توسعه نرم افزار توضیح داده شود.
انواع نسخههای بیت باکت
پیش از شروع یکپارچهسازی این دو نرمافزار یک نکته لازم به ذکر است. برای نرمافزار Bitbucket دو نسخه توسط شرکت Atlassian ارائه میگردد. نسخه سرور (Bitbucket Server) و نسخه ابری (Bitbucket Cloud). در این دو نسخه تفاوتهایی وجود دارد.
در نسخه ابری نرم افزار بیت باکت، همه کارها توسط شرکت Atlassian انجام میشود و شما تنها لازم است بر روی کدها و repository ها کار کنید و آنها را مدیریت کنید. برای تیمهایی که نیاز به کنترل بیشتری داشته باشند نسخه سرور بیتباکت مناسب تر خواهد بود. زیرا که در نسخه سرور، تیم ها تمامی تنظیمات این سرویس را در دست خواهند داشت. در این نسخه شما نرمافزار را بر روی سرورهای خود نصب و مدیریت خواهید کرد. در صورتی که برای نصب نرمافزار به کمک نیاز دارید به صفحه تماس با ما مراجعه و با کارشناسان ما در تماس باشید.
با توجه به این توضیحات، در این مقاله سعی شده تمامی مطالب در دو نسخه سرور و ابری قابل استفاده باشد. اما تمرکز بیشتر ما در این مقاله بر روی نسخههای سرور هر دو محصول بیت باکت و جیرا میباشد. برای نصب و راهاندازی سامانههای جیرا و بیتباکت به صورت سرور با ما در تماس باشید.
چرا باید جیرا و بیتباکت را با یکدیگر یکپارجهسازی کنیم؟
اولین سوالی که لازم است در اینجا از خود بپرسیم این است که چه نیازی است که این دو سامانه را با یکدیگر یکپارچه کنیم و این کار چه مزیتی خواهد داشت؟
یکپارچهسازی این دو سامانه دلایل زیادی دارد. در وهله اول یکپارچهسازی این دو سامانه ویژگیهای مفیدی را پس از یکپارچهسازی در اختیار ما قرار خواهند داد. همانطور که خواهیم دید، با یکپارچه کردن این دو سامانه ویژگیهای جدید بسیار خوبی فعال خواهد شد.
تیمهای زیادی از نرم افزار جیرا برای مدیریت فرآیندهای توسعه نرمافزار خود بهره میبرند. با یکپارچه سازی نرم افزار جیرا و بیت باکت دید و تصویر کاملی از محیط و روال توسعه نرمافزار به افراد تیم ارائه خواهد شد.
شروع یکپارچهسازی جیرا و بیتباکت
زمانی که شما تصمیم به لینک کردن بیت باکت و جیرا گرفتید به راحتی میتوانید این کار را انجام دهید. برای اینکار وارد یکی از نرم افزار های بیت باکت یا جیرا شوید. از بخش Administration گزینه Application Link را انتخاب کنید.
برای مثال در نرمافزار جیرا از قسمت Administration به قسمت Application مراجعه کرده و وارد Application Link شوید.
پس از وارد کردن آدرس URL سامانه بیتباکت بر روی Create new link کلیک کنید.
در صورتی که سامانه جیرا دسترسی لازم برای اتصال به سرویس بیتباکت را داشته باشد پنجره زیر نمایش داده خواهد شد و سامانه جیرا، اطلاعات سامانه بیتباکت را دریافت و نمایش خواهد داد.
در صورتیکه نام کابری و رمز عبور کاربر Administrator در هر دو سامانه یکسان باشد، گزینه The servers have the same set of users and usernames را انتخاب کنید در غیر این صورت پس از زدن گزینه Continue لازم است نام کاربری و رمز عبور کاربر Administrator سامانه بیتباکت را وارد نمایید.
در صورت موفقیت آمیز بودن یکپارچهسازی صفحه زیر برای ذخیره تنظیمات مربوط به Smart Commits نمایش داده خواهد شد.
پس از اتمام فرآیند یکپارچهسازی دو نرمافزار، بخش development در ایشوهای جیرا نمایش داده خواهد شد.
بهینهسازی بیتباکت برای کار با جیرا
تا اینجای کار شما یکپارچهسازی اولیه دو نرمافزار را انجام داده اید. برای عملکرد بهتر دو نرم افزار با یکدیگر، تغییرات کوچکی لازم است در نرمافزار بیتباکت انجام دهید تا مناسب با نیاز شما کار کند.
برای شروع، به بخش Branching model در نرم افزار بیت باکت رفته تا تنظیمات مربوط به آن را انجام دهید. در این بخش نحوه انجام Branch ها در نرم افزار بیت باکت را تنظیم میکنید. این ویژگی به شما این امکان را میدهد تا نحوه نامگذاری Branch ها را مشخص کنید. همچنین مشخص کنید که سیاست merging به چه شکل باشد.
برای مثال در تنظیمات این بخش شما میتوانید انواع branch هایی که امکان ایجاد آن وجود دارد و نام هر کدام از branch ها را تنظیم کنید. همچنین در این بخش سیاستهای merge نیز تعیین میشود.
چرا این تنظیمات اهمیت دارند؟ زیرا با یکپارچهسازی نرمافزار جیرا و بیتباکت شما امکان ایجاد و مدیریت branch ها را در نرمافزار جیرا به همان آسانی بیتباکت خواهید داشت. بنابراین اگر در جیرا اقدام به ایجاد یک branch به طور مستقیم از یک issue کنید مطابق با تنظیمات این صفحه خواهد بود.
زمانیکه در نرمافزار جیرا یک User Story جهت پیادهسازی نیازمندی جدیدی در نرم افزار به یک توسعهدهنده تخصیص داده میشود، کاربر در صفحه مربوط به همان issue با زدن گزینه create a branch این امکان را دارد تا branch مد نظر خود برای توسعه کدهای مرتبط با User Story را ایجاد کند. با زدن این گزینه، پنجرهای برای کاربر باز خواهد شد که تنظیمات لازم برای ایجاد branch در آن قابل مشاهده خواهد بود. این تنظیمات مطابق با سیاستهایی است که در بخش Branching mode انجام دادهاید.
قابلیت Smart Commit
یک ویژگی بسیار کاربری که نمیتوان از آن چشمپوشی کرد، ویژگی Smart Commit است که با یکپارچهسازی نرمافزار های جیرا و بیتباکت فعال میشود. این ویژگی که از نسخه ۴.۲ بیتباکت و ۷.۱ جیرا راهاندازی شد، به کاربر این امکان را میدهد تا با وارد کردن دستورات خاصی در هنگام commit کردن کدها در بخش Comment، دستوراتی برای نرمافزار جیرا ارسال گردد.
برای مثال زمانیکه یک توسعهدهنده قصد Commit کردن کدهای خود را دارد میتواند با وارد کردن Key مربوط به یک (یا چند Issue) و سپس وارد کردن #close در Comment یک Commit اقدام به بستن issue نماید.
یک ویژگی بهتر این است که در توسعهدهنده به صورت مستقیم میتواند زمانی که بر روی توسعه این بخش از کد صرف کرده است را با وارد کردن مقدار #time و سپس وارد کردن مقدار زمان (با فرمتی شبیه به 1w 2d 3h 15m به معنی یک هفته و دو روز و سه ساعت و ۱۵ دقیقه)، در جیرا وارد کند. این کار به صورت دستی نیز با log work در جیرا قابل انجام خواهد بود.
موارد بیشتری از این دستورات در نرمافزار بیتباکت قابل استفاده هستند. مواردی که میتوان از این دستورات استفاده کرد شامل:
• ارسال یک نظر (comment) بر روی یک issue در جیرا
• ثبت زمانهای صرف شده بر روی یک issue (قابلیت Time Tracking جیرا)
• انتقال Issue از یک وضعیت به وضعیت دیگر بر اساس جریان کاری تعریف شده در جیرا
دستورات smart commit ساختاری شبیه زیر دارند:
<ignored text> <ISSUE_KEY> <ignored text> #<COMMAND> <optional COMMAND_ARGUMENTS>
وارد کردن کامنت در یک ایشو:
Some text JRA-34 #comment corrected indent issue
وارد کردن Work log در یک ایشو:
JRA-34 #time 4h 30m Total work logged
انتقال ایشو در workflow:
JRA-090 #close Fixed this today
در این دستور ایشوی JRA-090 با انتقال (Transition) به نام close و با توضیح Fixed this today به وضعیت دیگری منتقل شده است.
استفاده از ویژگی smart commit محدود به این سه حالت نیست و شما میتوانید با نصب افزونههای مرتبط، استفاده از این قابلیت را توسعه دهید. یکی از افزونههای کاربردی در این زمینه Smart Commits for Bitbucket است.
بیتباکت را به workflow های جیرا اضافه کنید
پس از اینکه که تمامی تنظیمات مربوط به یکپارچهسازی را در بیتباکت انجام دادید، تنظیماتی نیز در نرمافزار جیرا قابل پیادهسازی و استفاده هستند.
قابلیت دیگری که قصد داریم در اینجا بررسی کنیم، امکان تغییر وضعیت یک ایشو در جیرا بر اساس رخدادهایی که در repository های بیت باکت انجام میشود است.
برای مثال اگر یک pull request بر روی یک branch در بیتباکت انجام شده است، ایشوهای مربوطه از وضعیت In Development به Code Review منتقل خواهد شد.
این کار با انجام تنظیمات در بخش Trigger یک workflow در جیرا انجام خواهد شد.
ویژگی Trigger در workflow های جیرا، ابزار قدرتمندی است که این امکان را به شما میدهد تا وضعیت ایشوها در یک پروژه جیرا را با اطلاعات ابزارهای توسعه نرمافزار خود (مانند بیتباکت) به صورت خودکار هماهنگ (Sync) کنید.
در حقیقت به جای اینکه توسعهدهنده نرمافزار بعد از کارهایی مانند commit کردن کدها، بازبینی کد، ایجاد یک branch و … به صورت دستی وضعیت ایشوهای مرتبط با آن را نیز در جیرا بروزرسانی کند، شما میتوانید با انجام تنظیمات در Trigger های یک workflow ، این فعالیتها را به صورت خودکار در آورید.
پس از انجام تنظیمات مربوط به Trigger در workflow جیرا، توسعهدهنده نرم افزار کافی است Key مربوط به ایشو را در Commit خود وارد کند تا Trigger مربوط به آن ایشو اجرا شود. افزونههایی نیز وجود دارد که توسعهدهندگان را ملزم به وارد کردن key ایشوها در هنگام کامیت کردن کدهای خود میکند. با کمک این افزونهها که در بخش Hooks نرمافزار بیتباکت فعال و تنظیم میشود، لازم نیست مدام به توسعهدهندگان گوشزد کنید که Key مربوط به ایشوها را در Comment کامیت خود وارد کنند. با ملزوم کردن کاربران، پس از مدتی این کار یک عادت برای آنها خواهد شد.
استفاده از Hooks در بیتباکت
قابلیت Hooks در بیتباکت (نسخه سرور) روش خوبی برای خودکار سازی فعالیتهای متداول مربوط به مدیریت کد است. استفاده از Hooks روش خوبی برای مدیریت پیچیدگیهای توسعه نرمافزار فراهم میآورد. برای مشاهده قابلیتهایی که بخش Hooks در بیتباکت فراهم شده است از بخش تنظیمات و قسمت workflow، گزینه Hooks را انتخاب کنید. موارد پیشفرضی در این قسمت وجود دارد.
با یکپارچهسازی نرمافزار جیرا و بیتباکت گزینههای خوبی برای استفاده از Hooks فراهم خواهد شد. Hooks هایی برای اسکن کردن کامنتها در repository وجود دارد تا تمامی کامنتهای TODO را به صورت خودکار به یک ایشو در جیرا تبدیل کند.
برای گسترش موارد استفاده از Hooks ها میتوان از افزونههای مرتبط استفاده کرد. برای مثال با نصب افزونه Better Commit Policy for Bitbucket این امکان برای شما فراهم خواهد شد تا سیاستهای مناسبی جهت کامیت کردن کد توسط توسعهدهندگان قرار دهید.
این سیاستها و قوانین در نرمافزار جیرا وضع میشوند و زمانی که توسعهدهنده قصد انجام فعالیتهایی مثل commit, branch, tag , pull request داشته باشد، بیتباکت سیاستها را با جیرا تطابق خواهد داد و در صورتی که تمامی موارد پذیرفته شود اجازه انجام این فعالیت به توسعهدهنده داده خواهد شد. این سیاستها کمک خواهد کرد تا به مرور روالهای مناسبی بین توسعهدهندگان شکل گیرد.
برای مثال در صورتی که توسعهدهندهای از سیاستهای تگگذاری صحیح استفاده نکند، خطا دریافت خواهد کرد و لازم است تگها را مطابق با سیاستها وضع شده اصلاح کند.
ساخت ایشوهای جیرا از محیط بازبینی کدها در بیتباکت
یکی از مواردی که یکپارچهسازی بین جیرا و بیتباکت بسیار مفید و کابردی میکند، کار در pull request هاست.
بیت باکت یک محیط عالی جهت مشاهده و بازبینی pull request ها در اختیار کاربران قرار میدهد. زمانی که جیرا و بیت باکت با یکدیگر یکپارچه شده باشند، این امکان به وجود خواهد آمد که در هنگامی که کاربر در حال بازبینی کدها است، در صورت نیاز به تغییرات در کد، تسک مابهازای آن را به صورت مستقیم و بدون نیاز به خارج شدن از محیط بازبینی کد ایجاد نماید و به توسعهدهنده مربوطه در جیرا تخصیص دهد.
استفاده از Release Hub
یکی دیگر از ابزارهای عالی در پروژههای جیرا، استفاده از بخش مدیریت release ها در این نرمافزار است که اصطلاحات Release Hub نیز گفته میشود و با یکپارچهسازی با نرمافزار بیت باکت فعال میشود.
بخش Release Hub به شما اجازه میدهد تا وضعیت ایشوهای مرتبط با release های برنامهریزی شده را به صورت بصری مشاهده کنید.
این بخش نمودارهای بصری عالی برای مشاهده وضعیت تیکتها و کارها، تا زمان سررسید release فراهم می کند.
هم چنین بخش Release Hub به شما این امکان را میدهد وضعیت ایشوهایی که برای یک Release انتخاب کردهاید را نیز مشاهده کنید. در این بخش هر ایشو شامل دو وضعیت خواهد بود. وضعیت آن در workflow جیرا و وضعیت آن در repository مرتبط با آن در نرمافزار بیت باکت.
نتیجه
نرمافزارهای جیرا و بیتباکت از پرکاربردترین نرمافزارها در حوزه مدیریت پروژههای نرمافزاری و مدیریت کد است که هر دو محصول شرکت Atlassian است. امکان یکپارچهسازی این دو نرمافزار با یکدیگر و ویژگیهایی که فراهم میسازد باعث میشود فرایند توسعه نرمافزار هر چه بیشتر به صورت خودکار طراحی شود و تا حد ممکن از انجام کارها و فعالیتهای متداول به صورت دستی توسط کاربران جلوگیری شود. این امر موجب میشود توسعهدهندگان بیشتر بر روی کار خود متمرکز شوند.