وقتی پروداکشن از استیجینگ میخواد دیپلوی کنه
خلاصهٔ کاملتر
نویسنده تو این پست تعریف میکنه که حدود ۷۲ اپلیکیشن روی دو محیط استیجینگ و پروداکشن داره. ایدهٔ اصلی این بوده که هر چیزی اول بره روی استیجینگ، تست بشه و بعد به پروداکشن ترفیع پیدا کنه؛ ولی چون هیچ ابزاری این مسیر رو اجباری نمیکرد، عملاً دور زده میشد و بهمرور دو محیط از هم فاصله گرفتن و استیجینگ بهعنوان زمین تست فراموش شد.
راهحل یه کانکتوره که نقش پل بین دو مش رو بازی میکنه و به پروداکشن اجازه میده از استیجینگ بخواد یه کامپوننت رو بسازه، تست کنه و بعد بفرسته. به گفتهٔ نویسنده، چالش اصلی این بود که برای مقایسهٔ پیکربندی دو محیط، سیستم باید دقیقاً بدونه چی باید اونجا باشه — برای همین اول قابلیت دیپلوی اپلیکیشنهای جدید رو با همین روش ساخت. منطقش سادهست: وقتی سیستم بلده یه اپ جدید رو درست بالا بیاره، مرجع درستی هم برای بررسی بقیه داره.
بخش امنیتی طراحی جالبه. کامپوننت proc-mesh بدون دسترسی ویژه، بدون شبکه و فقط با یه یونیکسسوکت اجرا میشه. نویسنده میگه عمداً هیچ برنامهای رو بهصورت دائمی با کاربر root اجرا نکرده و بهجاش برای ارتقای موقت و کنترلشدهٔ دسترسی سراغ doas رفته، اون هم فقط روی یه فهرست مشخص از دستورها:
permit nopass xfproc as root cmd /usr/local/sbin/xf-restart-plug
permit nopass xfproc as root cmd /usr/local/sbin/xf-trustbase-verify
permit nopass xfproc as root cmd /usr/local/sbin/xf-install-binary
بقیهٔ کامپوننتها هم NoNewPrivileges=yes دارن، پس حتی اگه بخوان هم نمیتونن از این مسیر بالا بیان. ایدهٔ پشت این لایهبندی اینه که هر چی دسترسی بالاتر میره، دسترسی به شبکه از دست میره — یعنی هیچ جزئی همزمان قدرت اجرا و امکان حرف زدن با بیرون رو نداره.
حالا که سیستم هم میتونه پیکربندی اپهای موجود رو بررسی کنه و هم اپ جدید بسازه، کارهای انبوه مثل همسطح کردن دوبارهٔ دو محیط ساده شده: هر اپ اول استیج میشه، تست میشه و بعد به پروداکشن میره. یه نکتهٔ باز هم مونده — plug-mesh نمیتونه خودش رو دیپلوی کنه و هنوز از مسیر قدیمی Gitea runner استفاده میکنه. نویسنده میگه راهحلش رو در نظر داشته ولی چون کم به این کامپوننت دست میزنه، فعلاً نیازی به پیادهسازیش ندیده.
نکات کلیدی:
- کانکتوری بین مش استیجینگ و پروداکشن که ترفیع نسخه رو اجباری و قابلممیزی میکنه
- توانایی دیپلوی اپ جدید، به مرجعی برای تشخیص انحراف پیکربندی بین دو محیط تبدیل شد
- proc-mesh بدون شبکه و بدون دسترسی ویژه اجرا میشه و ارتقای دسترسی فقط از راه doas انجام میشه
- NoNewPrivileges=yes روی بقیهٔ کامپوننتها جلوی ارتقای ناخواستهٔ دسترسی رو میگیره
- plug-mesh هنوز خودش رو دیپلوی نمیکنه و روی مسیر قدیمی Gitea runner مونده




