فهرست مستندات

عملیات جای‌گذاری در هاب#

انتشار یک Environment آن را برای کشف عمومی واجد شرایط می‌کند؛ اما آن Environment را در Hub قرار نمی‌دهد. جای‌گذاری یک تصمیم جداگانه و دستی برای گزینش محتوا است که پس از انتشار توسط مدیر Registry الامر انجام می‌شود. هیچ جای‌گذاری خودکاری پس از انتشار انجام نمی‌شود.

توسعه‌دهندهٔ بیرونی به دسترسی به monorepo الامر نیاز ندارد. او Environment را با جریان عادی منتشر می‌کند و شناسهٔ پایدار env_... را به مدیر می‌دهد. مدیر سپس از Admin Panel یا CLI با نام alamr استفاده می‌کند. هر دو سطح، API مدیریتی یکسان Registry را فراخوانی می‌کنند.

مرز اختیار#

مالکمسئولیت
Environment هابهندسهٔ Zone، mesh لندمارک‌ها، برچسب‌ها، تعامل، مسیریابی و موجودی محدود اسلات‌های منطقی
Registryتخصیص فعلی slotId -> environmentId، شرایط کاتالوگ، یکتایی، مجوز مدیر و تاریخچهٔ ممیزی
ناشر EnvironmentEnvironment با تألیف مستقل، revisionهای bundle تغییرناپذیر، backend اختیاری متعلق به ناشر و نمایش عمومی کاتالوگ

تخصیص Registry هیچ هندسه یا لندمارک دلخواهی ایجاد نمی‌کند. Admin Panel و CLI فقط می‌توانند یک اسلات موجود از نوع manual را تغییر دهند. ساخت، جابه‌جایی یا حذف اسلات همچنان به تغییر تألیف‌شده در Hub نیاز دارد. Zone وضعیت محلی برنامهٔ Hub باقی می‌ماند و موجودیت Registry یا Environment مستقل با مجوز جداگانه نیست.

تخصیص به‌جای یک revision به شناسهٔ پایدار Environment اشاره می‌کند. بنابراین با انتشار revision فعال جدید، تا زمانی که Environment عمومی و واجد شرایط کاتالوگ بماند، نیازی به جای‌گذاری دوباره نیست.

موجودی و وضعیت‌های فعلی#

موجودی اولیهٔ env_hub / sunlit-way سه اسلات رسمی fixed و اسلات خنثی community-showcase-01 از نوع manual دارد.

حالتمعناعملیات مجاز مدیر
fixedاتصال رسمی تألیف‌شدهفقط‌خواندنی؛ set، replace و clear با conflict رد می‌شوند
manualلندمارک خنثی تألیف‌شده که مقصد آن را Registry مدیریت می‌کندset وقتی خالی است؛ replace یا clear وقتی تخصیص دارد

هر اسلات عمومی یکی از وضعیت‌های مشتق‌شدهٔ زیر را دارد:

وضعیتمعنارفتار عمومی ورود
openاسلات manual تخصیص نداردلندمارک باز تألیف‌شده نمایش داده می‌شود؛ عملیات ورود ندارد
occupiedتخصیص به revision فعال، منتشرشده، عمومی و واجد شرایط دقیق Environment حل می‌شودشناسهٔ مقصد افشا و payload ورود متعلق به Registry استفاده می‌شود
reservedاسلات ثابت بدون تخصیص است، مقصد تخصیص‌یافته گم‌شده/فاقد شرایط است یا حقیقت جای‌گذاری در دسترس نیستلندمارک رزروشدهٔ تألیف‌شده نمایش داده می‌شود؛ شناسهٔ مقصد و عملیات ورود ندارد

مدل خواندن مدیر، assignedEnvironmentId، updatedBy و updatedAt را نگه می‌دارد تا مدیر بتواند تخصیص reserved را عیب‌یابی کند. مدل عمومی فقط برای occupied مقدار destinationEnvironmentId را افشا می‌کند و مقصد stale را قابل ورود نشان نمی‌دهد.

پیش‌شرط‌ها#

  1. Environment مقصد یک revision فعال دارد که درخواست انتشار آن با visibility برابر public در وضعیت published است.
  2. مقصد واجد شرایط کاتالوگ باقی مانده است: revision فعال و Pluginهای نصب‌شدهٔ آن block نشده‌اند.
  3. مقصد خود env_hub نیست و در همان Hub به اسلات دیگری تخصیص نیافته است.
  4. اپراتور از حساب واقعی مدیر Registry استفاده می‌کند. توکن Project و عضویت عادی Project کافی نیست.
  5. هر عملیات set، replace یا clear دلیلی بین ۳ تا ۱۰۰۰ نویسه دارد.

Registry این invariantها را هنگام mutation دوباره بررسی می‌کند. پنهان‌کردن یک گزینه در Admin Panel فقط برای تجربهٔ کاربری است و جای authorization را نمی‌گیرد.

پیش‌بررسی اپراتور#

پیش از هر set یا replace، اپراتور وضعیت کامل مقصد را در یک گذر تأیید می‌کند:

  1. revision فعال منتشرشدهٔ دقیق و رکورد عمومی کاتالوگ آن حل می‌شود.
  2. Runtime و Presence محیط سالم است تا مقصد پس از جای‌گذاری واقعاً قابل ورود باشد.
  3. وضعیت فعلی اسلات و هر تخصیص موجود از فهرست مدیر خوانده می‌شود، نه حدس زده.
  4. دلیل mutation پیش از نوشتن مشخص است، چون هر mutation همراه آن ممیزی می‌شود.

جریان Admin Panel#

  1. با حساب مدیر Registry وارد Admin Panel پلتفرم شوید.
  2. از جایگاه‌های Hub مسیر /placements را باز کنید.
  3. تأیید کنید صفحه env_hub و sunlit-way را نشان می‌دهد و mode، state، تخصیص فعلی و آخرین تغییر هر اسلات را بررسی کنید.
  4. برای اسلات manual یک Environment از موجودی عمومی و فعال انتخاب کنید، دلیل را وارد کنید و قرار دادن در Hub یا جایگزینی مقصد را بزنید.
  5. برای حذف تخصیص دستی، دلیل جداگانه وارد کنید و خالی‌کردن جایگاه را بزنید.
  6. صفحه را دوباره بارگیری یا فهرست را مجدد دریافت کنید و وضعیت حاصل یعنی occupied، open یا reserved را تأیید کنید.

ردیف fixed کنترل تغییر ندارد. اگر فهرست placement قابل تأیید نباشد، Admin Panel همهٔ mutationها را غیرفعال می‌کند. اگر فقط موجودی Environmentهای واجد شرایط در دسترس نباشد، تخصیص و جایگزینی غیرفعال می‌شود؛ عملیات clear ممکن است وقتی رکورد placement احراز‌شده و نشست CSRF معتبر است همچنان در دسترس بماند.

جریان CLI#

با حساب مدیر احراز هویت کنید. CLI عمومی به‌صورت پیش‌فرض از Registry پروداکشن استفاده می‌کند؛ هنگام کار با deployment دیگر، origin صریح مفید است:

alamr login --registry https://registry.al-amr.com

Hub و Zone پیش‌فرض را فهرست کنید:

alamr admin hubs list --json

شکل صریح فرمان چنین است:

alamr admin hubs list env_hub sunlit-way --json

اسلات دستی خالی را تخصیص دهید یا مقصد فعلی آن را جایگزین کنید:

alamr admin hubs set env_hub sunlit-way community-showcase-01 env_example \
  --reason "Approved community showcase" --json

تخصیص را خالی کنید:

alamr admin hubs clear env_hub sunlit-way community-showcase-01 \
  --reason "Showcase period completed" --json

فقط operandهای Hub و Zone در list مقدار پیش‌فرض دارند. set و clear همهٔ شناسه‌ها را صریح می‌خواهند تا اپراتور مقصد استنباط‌شده‌ای را تغییر ندهد. خروجی ساختاریافته با قرارداد اعتبارسنجی می‌شود؛ پاسخ نامعتبر Registry به‌جای موفقیت، شکست محسوب می‌شود. set، replace و clear عملیات مستقلی‌اند: هرکدام هنگام اجرا بر اساس وضعیت فعلی اسلات ارزیابی می‌شوند و تکرار همان clear اسلات را open نگه می‌دارد و تغییر تخصیص دومی ایجاد نمی‌کند.

رفتار ممیزی و شکست#

set/replace رویداد hub.placement.set و clear رویداد hub.placement.clear را می‌نویسد. رکورد ممیزی شامل مدیر، Hub، Zone، اسلات، مقصد، دلیل و زمان است. mutation تخصیص و درج audit یک تراکنش Registry هستند؛ اگر نوشتن audit شکست بخورد، تغییر placement commit نمی‌شود.

صفحهٔ فعلی Hub و فرمان‌های admin hubs در CLI، feed ممیزی را رندر نمی‌کنند. مدیر رویداد ذخیره‌شده را از endpoint مدیریتی و احراز‌شدهٔ GET /v1/admin/audit-logs بررسی و resourceId آن (hubEnvironmentId:zoneId:slotId) و metadata را تطبیق می‌دهد.

conflictهای مورد انتظار شامل اسلات fixed، انتخاب خود Hub به‌عنوان مقصد، مقصد فاقد شرایط، مقصد گم‌شده و مقصدی است که قبلاً جای دیگری تخصیص یافته است. این خطاها را با ویرایش شناسه یا سورس Hub دور نزنید. وضعیت انتشار/کاتالوگ را اصلاح یا Environment واجد شرایط دیگری انتخاب کنید، سپس همان فرمان دقیق را تکرار کنید.

Hub پاسخ عمومی placement و کاتالوگ عمومی Environment را در یک مرز refresh می‌خواند. اگر هر منبع شکست بخورد، view تخصیص حل‌شده پاک می‌شود و لندمارک‌های مدیریت‌شدهٔ تألیف‌شده به‌شکل reserved رندر می‌شوند. Hub هیچ‌گاه به مقصد hard-codeشده‌ای برنمی‌گردد که عملیات clear مدیر را بی‌اثر کند.

تأیید اپراتور#

  1. collection را فهرست و تأیید کنید اسلات موردنظر manual است.
  2. community-showcase-01 را به Environment عمومی و واجد شرایط set کنید و occupied همراه شناسهٔ دقیق مقصد را تأیید کنید.
  3. Hub را باز کنید و تأیید کنید لندمارک تألیف‌شده از payload ورود Registry استفاده می‌کند؛ نزدیکی به‌تنهایی نباید navigation انجام دهد. پیش از تمام‌شدن جای‌گذاری، ورود واقعی به Environment جای‌گذاری‌شده را از Hub اثبات کنید.
  4. اسلات را clear و در refresh بعدی فهرست/خواندن، open را تأیید کنید.
  5. برای شاهد منفی، مقصد تخصیص‌یافته را فاقد شرایط کنید و تأیید کنید اسلات بدون مقصد عمومی یا عملیات ورود، reserved می‌شود.
  6. feed ممیزی مدیر را برای دلیل متناظر set/clear بررسی کنید.

برای جریان مستقل بازبینی و انتشار، چرخهٔ انتشار و برای سطح کامل فرمان‌ها مرجع CLI را ببینید.