چند وقت پیش بود که دنبال بهترین ابزار برای استفاده به عنوان رجیستری/مخزن/ریپازتوری بودم.
من همیشه دنبال بهترین ابزارها هستم، برای پیدا کردن بهترین ابزارها اول راجبشون اطلاعات کسب میکنم و کلی مطالعه میکنم، بعد وقت میزارم و عملکردشون رو تست میکنم و بعد با یه لیست از مزایا و معایب و نیازمندی های خودم، بهترین ابزار رو به عنوان برنده تاجگذاری میکنم.
من چند تا گزینه توی ذهنم داشتم:
رفتم سراغ harbor که تو بررسی اولیه متوجه شدم سایت این ابزار خیلی تر و تمیز و بدون هیچ گام اضافه ای که سرعتت رو بیاره پایین، اجازه میده سرویس خودت رو هاست بکنی و پیش بری، تا اینجا برای من عالی بود.
قدم بعدی، بررسی UI بود که اون هم فوقالعاده بود!
در مورد تنطیماتharbor هم بخوام بهتون اطلاعات بدم باید بگم که تنظیماتش عالی بود و ساده!
معایب harbor:
در مورد معایب و مشکلات harbor بخوام بهتون بگم اول از همه این که این مخزن صرفا یه رجیستری داکر هست (۱) و بقیه آرتیفکت های حاصل از ساخت پروژه رو نمیتونی توش ذخیره یا کش بکنی.
فیچر دومی که باهاش به مشکل خوردم مخزن کش بود که اجازه میده یه ایمیج رو از یک آپ استریم بگیری و کش بکنی، ولی خب ما توی ایران زندگی میکنیم :) و نیاز داریم که برای اتصال به بیشتر رجیستری ها از پروکسی استفاده بکنیم. ساز و کار تنظیم پروکسی نداشت و با حقه هایی مثل ساختن ایمیج کاستوم از برنامه و ست کردن مقداری مثل http/https_proxy هم نتونستم به نتیجه ایده آل خودم برسم، پس با harbor خداحافظی کردم و ابراز بعدی رو تست کردم.
https://goharbor.io/
خب گزینه بعدی nexus بود،سایت این ابزار ظاهر خوب و تر تمیزی داشت که تو نگاه اول چشمم رو گرفت ولی وقتی موقع دانلود شد، علیرغم اینکه این برنامه OSS هست ولی یه دیوار ثبت نام داشت که باید ازش میگذشتی، خب اینو که دوست نداشتم (سلیقه شخصی نویسنده)، بعد این مرحله زمان تست رسیده بود.
قدم اول: بررسی ظاهر
بسیار ساده و زشت اما کاربردی!
در مورد تنظیماتش؟ تقریبا امکاناتی شبیه هاربر داشت ولی چون قبلش هاربور رو دیده بودم که نسخه زیباتر همین تنظیمات رو داشت چنگ خاصی به دل نمیزد.
مزایا: خب تقریبا هر مدل آرتیفکتی رو که دلت بخواد توش داشت و میتونستی استفاده بکنی و اینکه اپن سورس بود که این مورد، کاملا مطابق سلیقه من بود.
معایب: پروکسی چی؟ خب ساپورت میکنه اما به صورت یک جا، یعنی به صورت جداگانه برای هر ریپازیتوری نمیتونی از پروکسی متفاوت (باز هم از مشکلات ایرانه نه مشکلات استاندارد) یا گزینه خاموش یا روشن کردنش استفاده بکنی، به خاطر مشکلاتی که در امکانات ساپورت پروکسی و ظاهر نه چندان قشنگ nexus از این ابزار هم گذشتم و به سراغ تست ابزار بعدی رفتم.
https://www.sonatype.com/
خب گزینه بعدی که داشتم jfrog بود، وقتی وارد سایت این ابزار شدم با دو گزینه مواجه شدم که باید انتخاب میکردم از jfrog container registry استفاده کنم یا jfrog artifactory که در نهایت JCR انتخاب کردم.
چرا JCR رو انتخاب کردم؟
خب JCR رایگان بود و نیاز به هیچ کاری نداشت و از اونجایی هم که فرصت کافی نداشتم که آرتیفکتوری رو بالا بیارم و بعد هم برم سراغ فایلای جاوای دوست داشتنی :/ و کرک بکنم انتخاب JCR بهترین گزینه بود.
در نگاه اول ظاهری بسیار شیک داشت، دکمه ها برق میزدن و آیکون ها جذاب بودن.
تنظیمات JCR تقریبا پیچیده بود اما این پیچیدگی کارآمد بود چون هر چی رو که یه حرفه ای لازم داشت فراهم میکرد. باید اضافه بکنم که jfrog یه اکو سیستم کامل هست و ابزار های بیشتری داره که در ترکیب با همدیگه قدرتمند تر میشن.
ساپورت انواع ریپازتوری چطور؟ ویرچوآل ریپازتوری که ترکیب ریپازتوری لوکال و کش بود و خوب این واقعا عالیه!
لاگ: زیباترین لاگ هایی که توی یه برنامه دیدم رو برای شما توی خروجی چاپ میکنه و قدر این ویژگی رو زمانی میدونیم که در حال دیباگ هستیم!
پروکسی؟؟ میتونی هر چند تا بخوای تعریف بکنی و هر کدوم رو برای هر ریپازیتوری که میخوای استفاده بکنی.
انتخاب نهایی: بله همین رو میبرم لطفا (۲)
https://jfrog.com/
خب حالا که مخزن ریپازتوری مورد علاقم برای کار انتخاب کردم به یه دلیل خوب دلم برای harbor تنگ شد!
این دلیل همون دلیلی هست که انگیزه ی من شد تا این مقاله رو بنویسم و با شما به اشتراک بزارم.
چون پاک کردن آرتیفکت های قدیم توی هاربر مثل خوردن یه لیوان چایی توی بعد از ظهر سرد بودش، فقط کافی بود چند تا کلیک بکنی و تمام. برای آرتیفکتوری نیاز بود که یه راهکار رو از ابتدا خودم بنویسم، چون اسکریپتی که توی اینترنت و سایت رسمی آرتیفکتوری پیدا میکنید خیلی ساده هست و اصلا پیچیدگی های یه شرکت بزرگ رو شامل نمیشه.
آستین بالا زدم و nvim رو باز کردم و شروع به کار کردم.
یه کانفیگ فایل نوشتم که از شما یه آرایه از جاهایی که میخوای بگیری و پاک بکنی رو دریافت میکنه، داخل هر کدوم از این تارگت مسیر ها چند تا رشته تنظیمات میگیره، مثل اینکه کدوم ریپازتوری رو پاک بکنه، چه مسیری ازش رو پاک بکنه، تا چه زمانی رو پاک بکنه (مثلا یک هفته قبل یا یک ماه قبل) و اینکه آیا مورد خاصی هست که بخوای استثنا باشه و اونارو پاک نکنه.
مثل همیشه به یه اسکریپت ساده کفایت نکردم و بهش یه سری امکانات مثل منوی داخل tui اضافه کردم و برای اینکه خیلی ساده بشه تست کرد و استفادش کرد هیچ ماژول اضافه تری داخلش استفاده نکردم.
اگر دوست دارید میتونید پروژه و اسکریپت من رو اینجا ببینید و اگر از این سولوشن استفاده میکنید میتونید توی بهتر کردن این پروژه بهم کمک بکنید.
https://github.com/erfantkerfan/jfrog-cleaner
پی نوشت:
(۱): برای افراد خیلی باسواد: helm هم ساپورت میکنه
(۲): این انتخاب برای مشاوره به یه شرکت کوچیک بودش ولی به احتمال زیاد مسیر انتخاب jfrog artifactory در صورتی که صرفا به داکر رجیستری نیاز ندارید بهتر خواهد بود.
** اگر استقبال صورت بگیره مسیر کرک کردن نرم افزار jfrog artifactory هم توی یه مقاله دیگه توضیح و آموزش میدم.
منتظر نظرات شما هستم
عرفان قلی زاده یک دواپس :)