رفع مشکل CI (Continuous Integration) سرورهای ایرانی بر روی gitlab

اوایل یه سرور داشتم که هنوز آی‌پی ش توسط گوگل تحریم نشده بود و طبیعتا راحت با gitlab کار می‌کردیم.

بعد از چند وقت، آی پی ما هم تحریم شد. CI دستی! مسخره بود واقعا… یا باید از پروکسی استفاده می‌کردیم، یا ssh tunnel یا راه حل سوم که من انتخاب کردم: gitlab runner اختصاصی!

همونطور که می‌دونید برای راه اندازی CI روی gitlab باید یه runner داشته باشید که دستورات داخل .gitlab-ci.yml رو براتون اجرا کنه. خود گیت لب runnerهای اشتراکی داره ولی محدود…
اول با ssh tunnel از یه سرور خارجی موفق به استفاده CI و دورزدن تحریم شدم. خب بدی این راه حل این بود که یه task روی خط فرمان باید اجرا می‌موند و  ارتباط تونل با بستن ارتباط ssh از کار می‌افتاد و اگر ارائه‌دهنده سرور مجازی ارتباط vnc بهت می‌داد اونجا هم نمی‌تونستی از محیط کاربری exit کنی و به هر دلیلی هر کسی من جمله همون فروشنده سرور مجازی vnc رو باز می‌کرد به تمام سرور دسترسی داشت. مگر اینکه به حالت یک demand این تونل رو ایجاد می‌کردم که باز هم راضی کننده نبود و ظاهر خوبی برام نداشت.
ولی وقتی فهمیدم shared runner های گیت‌لب جواب‌گو نیست این ایده تو ذهنم اومده که روی همون سرور مجازی خارج از کشور می‌تونم یه runner ثبت کنم و از اونجا که این runner دیگه تحت کنترل خودم بود به راحتی به هر سروری من جمله سرورهای ایران دسترسی داشت.
هر چند راه حل دورزدن تحریم از سمت ایران یک طرفه بود این راه حل که به خرجش می‌ارزه هم برای طرف دیگه نوشتم تا هر کس مشکلی مثل من داشت بتونه استفاده کنه. هر سوال یا کمکی خواستید تو کامنت ها در خدمتم…

رفع تحریم‌ها با شکن

چند وقت پیش از وزیر ارتباطات خبری دیدم که شخصا توییت کرده بود. راه حل رفع مشکل تحریم! shecan.ir

البته اولش نتونستم کامل درک کنم. اما وقتی کم کم مشکلاتم با gitlab و docker و تحریم و عدم تمدید سرور vpnام دوباره کنار هم قرار گرفت انگار دوباره پیغام می‌دادن شکن رو تست کن.

بعد از مدتی فهمیدم کار می‌کنه شاید هم یه سری باگ از سمت اونا بوده… مثلا چند وقت پیش با gitlab مشکل داشت که بهشون گزارش دادم و رفع کردند. دست مریزاد! وقتی می‌بینی بدون هیچ ارتباط خارجی از ماشین شخصی‌ت یه repository از gitlab رو clone می‌کنی یا push و pull انجام می‌دی یا به راحتی می‌تونی هر imageای از docker رو دانلود کنی انگار داری رو آب راه می‌ری!!!

البته مشکلات هنوز ادامه داره که یکیش از کار افتادن CI های gitlab از سمت سرور‌های ایران هست که برای اون هم یه راه حل البته هزینه‌دار پیدا کردم.