اینم یه تجربه پراکنده دیگه!
خب الان که من فرصت نوشتن بیشتر دارم تصمیم گرفتم یکم در مورد gerrit بنویسم. توی هر شرکتی معمولا یه چیزی به اسم «چرخه حیات توسعه نرم افزار» وجود داره که آدمها ازش بصورت آگاهانه یا به وسیله اونچیزی که فرهنگ اون تیم یا گروه دیکته میکنه ازش استفاده میکنند. که اگه عمری بود بیشتر در موردش مینویسم. چرخه حیات کارهایی که ما در شرکت انجام میدیم به این شکله که:
- کارهای موجود بصورت فردی از لیست کارها انتخاب میشه و انجام میشه
- پس از نهایی شدن کار کدها برای merge در اختیار بقیه قرار میگیرن
- پس از تایید توسط jenkins و حداقل یکی از افراد تیم بسته به تشخیص بررسی کننده کارها merge میشن
- پس از این مراحل هم که تسترها شروع به بررسی کد میکنند.
معرفی gerrit
حالا پست امروز یه معرفی کوتاه و از ابزاری هست به اسم gerrit که ما از اون برای merge استفاده میکنیم.
روند هم اینه که با امکاناتی که gerrit در اختیار ما قرار میده، بعد از ارسال کد یک مرج محلی اتفاق میفته و کد توسط ci که همون jenkins باشه کنترل و کامپایل میشه. اگه این مرحله درست بود jenkins به gerrit میگه که اگه کسی review کرده میتونه تغییرات رو merge کنه و گرنه تا عدم موفقیت jenkins کسی نمیتونه کد رو اشتباهی merge کنه. این تضمین میکنه که دیگه کسی چیز اساسی رو خراب نمیکنه. پس از تایید jenkins هم افراد میتونن کد رو بررسی و تغییرات رو merge کنن. همچنین gerrit پلاگینهایی داره که کمک میکنه تا ما اون رو به جاهای مختلف مثل jira وصل کنیم و از اینکه یه کار آمادهاست و یا یه کار merge شده با خبر بشیم و حتی وضعیت موارد رو تغییر بدیم.
بعد از بررسی روند کا نوبت به پیش فرضهای هست که توی gerrit وجود داره.
- اینکه مدیریت منبع git در کنترل gerrit هست و ازش به عنوان یک git server استفاده میشه. یعنی اگه سرور دیگهای مثل github هم وجود داره کپی gerrit هست نه بالعکس
- اینکه تغییرات هرچقدر هم که زیاد و مداوم باشن در نهایت در قالب یک commit ارسال میشن. ممکنه بگید که خب اگه من خواستم وسط کارم push کنم چی؟ جواب اینه که هر کامیت یک تغییر هست و تغییر میتونه draft باشه که یعنی هنوز کامل نشده
- اینکه gerrit تلاش میکنه که تاریخچه کد خطی بمونه و این در مجموع خوبه. برای خطی نگه داشتن تاریخچه به شدت از rebase استفاده میکنه
حالا اگه بخوام بصورت خلاصه مزایا و معایب رو بگم هم اینا به ذهنم میرسه
مزایا و معایب gerrit
مزایا:
- تاریخچه خطی
- ثبات در عملکرد
- وجود ابزار git review برای ارسال به gerrit و راحت کردن استفاده از gerrit
- شفافیت روند کاری بررسی کرد
- راحتی integrate شدن با ابزارهای دیگه مثل jira و jenkins و gitlab
معایب:
- مستندات گنگ. خیلی پیدا کردن چیزهای ساده توی gerrit آسون نیست
- زمان زیادی برای یادگیری استفاده از gerrit مورد نیاز هست
در آخر بگم که بگم که روند کاری که هریک از این ابزارها پیشنهاد میدن یک روند دیکته شده است و ممکن به مذاق شما خوش نیاد پس از هر روشی که به مذاقتون خوش میاد استفاده کنید. ما هم یه مدت از gerrit استفاده کردیم بعدش از gitlab و دوباره برگشتیم gerrit چون به نظرمون gerrit بهتر بود
همین!