Skip to content

سیاست کنار گذاشتن ​

هزاران سرور بدون نظارت به‌روز می‌شوند و اسکریپت‌ها، اپ‌های مشتری و پنل‌های دیگر به رفتار امروزشان وابسته‌اند. این‌ها چیزهایی است که می‌توانند به آن تکیه کنند.

چه چیزهایی پوشش داده می‌شود ​

قراردادبا چه چیزی قفل شده
REST API: مسیرها، متدها، فیلدها، کدهای وضعیت، چه کسی چه چیزی را می‌تواند صدا بزندinternal/api/testdata/routes.golden، cmd/wui/testdata/contract/
لینک‌های سابسکریپشن و آنچه سرو می‌کنندتست‌های قرارداد و تست‌های ارتقا (هر لینک از v1.0.0 به بعد)
تنظیمات، با کلید و مقدار ذخیره‌شدهfixtureهای ارتقا، هر کلید با مقدار غیرپیش‌فرض
دیتابیسمهاجرت‌ها فقط اضافه می‌کنند (TestMigrationsOnlyAdd)
آرشیوهای بکاپبکاپ هر نسخهٔ قبلی بازگردانی می‌شود (TestEveryEarlierBackupRestores)
دستورهای wui و w-ui، فلگ‌های نصابتست‌های نصاب؛ مستندات
فایل‌های زیر /etc/wui و /var/lib/wui، یونیت‌های systemd، نام‌ها و markهای nftablesمقایسهٔ قبل و بعد در جاب ارتقای CI
پروتکل پنل و نودجاب سازگاری نود در CI

قاعده‌ها ​

۱. پیش‌فرض، اضافه کردن است. فیلد، endpoint، تنظیم، فلگ یا فایل تازه کنار قبلی‌ها اضافه می‌شود. هیچ چیزی که نسخهٔ قبلی نوشته یا جواب داده تغییر نام نمی‌دهد.

۲. در ریلیز patch یا minor چیزی حذف نمی‌شود مگر با مراحل زیر. حذف در ریلیز major (3.0) هم همین مراحل را دارد.

۳. اول کنار گذاشتن، و مکتوب. در CHANGELOG یک ورودی Deprecated با جایگزینش؛ مستندات علامتش را می‌خورد؛ پنل هر بار که استفاده شود هشدار لاگ می‌کند (جواب API هم هدر Deprecation: true دارد).

۴. حداقل دو ریلیز minor و ۹۰ روز کار کند، هر کدام بیشتر بود، بعد از ریلیزی که کنارش گذاشت.

۵. با یک ورودی Removed حذف می‌شود همراه با کاری که به‌جایش باید کرد، زیر Updating اگر اپراتور باید کاری کند.

هرگز ​

  • لینک سابسکریپشنی که به مشتری داده شده کار نکند تا وقتی مشتری هست، مگر اپراتور آن را بچرخاند. توکن، مسیر روی پورت سابسکریپشن و آنچه اپ کلاینت می‌خواند (کانفیگ، Subscription-Userinfo، Profile-Title) شکلشان را نگه می‌دارند.
  • تنظیمی تغییر نام بدهد. کلید تازه اضافه می‌شود، کلید قدیمی به‌عنوان جایگزین خوانده می‌شود و بکاپ‌ها هر دو را می‌برند.
  • مهاجرتی ستون، جدول یا ایندکسی را حذف یا تغییر نام بدهد، جز ایندکسی که عمداً جایگزین شده و با دلیلش در internal/database/additive_test.go آمده.
  • پنلی دیگر نتواند نودی را که یک ریلیز minor عقب‌تر است مدیریت کند، یا نودی به پنلی که یک ریلیز minor عقب‌تر است جواب ندهد.
  • تگ ریلیز منتشرشده جابه‌جا یا حذف شود.

کلیدهای تنظیمات و CLI با جزئیات ​

  • کلید تنظیمات تا وقتی هر نسخهٔ پشتیبانی‌شده‌ای ممکن است آن را نوشته باشد با نام قدیمی‌اش هم خوانده می‌شود.
  • زیردستور یا فلگ CLI که می‌رود، به‌عنوان نام مستعاری کار می‌کند که می‌گوید جایگزینش چیست.
  • فلگ نصاب پذیرفته می‌شود، و اگر دیگر کاری نمی‌کند با یک یادداشت نادیده گرفته می‌شود، نه اینکه نصب را خراب کند.

Released under the AGPL-3.0 License.