Frames & upgradesמסגרות ושדרוגים
A frame is a versioned promise about how the platform treats your application. You pin one line in shipyard.yaml, and from that moment the platform can change underneath you but the contract cannot change under that line.
מסגרת היא הבטחה מגורסת לגבי האופן שבו הפלטפורמה מתייחסת לאפליקציה שלכם. אתם מקבעים שורה אחת ב-shipyard.yaml, ומאותו רגע הפלטפורמה יכולה להשתנות מתחתיכם אבל החוזה לא יכול להשתנות מתחת לשורה הזו.
The problem this solvesהבעיה שזה פותר
Every managed platform eventually changes something: a Node version, a default header, the way a build cache is keyed. Usually you find out because something broke on a Tuesday. The honest fix is not “we will never change anything”, because that is a promise nobody keeps. It is to say exactly what is guaranteed and version that statement.
כל פלטפורמה מנוהלת משנה בסוף משהו: גרסת Node, כותרת ברירת מחדל, האופן שבו מפתח מטמון הבנייה מחושב. בדרך כלל מגלים את זה כי משהו נשבר ביום שלישי. התיקון הכן הוא לא ”לעולם לא נשנה כלום“, כי זו הבטחה שאף אחד לא מקיים. הוא לומר בדיוק מה מובטח, ולגרסן את האמירה הזו.
contract: 1
What frame 1 guaranteesמה מסגרת 1 מבטיחה
RuntimeA Linux container with your declared port bound and $PORT set. Node 20 LTS or newer within the same major unless you pin one.קונטיינר לינוקס עם הפורט שהצהרתם עליו ו-$PORT מוגדר. Node 20 LTS ומעלה באותה גרסה ראשית, אלא אם קיבעתם אחרת.Config keysEvery field documented on the shipyard.yaml page keeps its name and meaning. New fields may appear; existing ones do not change.כל שדה שמתועד בעמוד shipyard.yaml שומר על שמו ומשמעותו. שדות חדשים עשויים להופיע; קיימים לא משתנים.Env injectionValues arrive as process environment variables at start, never at build.ערכים מגיעים כמשתני סביבה של התהליך בעלייה, לעולם לא בבנייה.Health gateNo release serves traffic before its healthcheck returns 2xx.שום שחרור לא משרת תעבורה לפני שבדיקת הבריאות שלו מחזירה 2xx.RollbackThe previous release stays restorable without a rebuild for at least 30 days.השחרור הקודם נשאר ניתן לשחזור ללא בנייה מחדש למשך 30 יום לפחות.Exit codesThe CLI exit codes on the reference page keep their meaning.קודי היציאה של ה-CLI בעמוד הייחוס שומרים על משמעותם.API shapeEverything in /openapi.json is a promise. Fields are added, never removed or retyped.כל מה שב-/openapi.json הוא הבטחה. שדות מתווספים, לעולם לא מוסרים ולא משנים טיפוס.How a new frame arrivesאיך מסגרת חדשה מגיעה
- A new frame is published with a written diff. Not a changelog entry, a diff: what changed, why, and what you have to do.מסגרת חדשה מתפרסמת עם diff כתוב. לא רשומת changelog, אלא diff: מה השתנה, למה, ומה אתם צריכים לעשות.
- Your project stays on its pinned frame. Nothing moves you. You bump
contract:when you are ready and deploy.הפרויקט שלכם נשאר על המסגרת המקובעת שלו. שום דבר לא מזיז אתכם. אתם מעלים אתcontract:כשאתם מוכנים ופורסים. shipyard deploy --frame 2 --dry-runbuilds and health-checks against the new frame without touching your live release, so you find out before you commit.shipyard deploy --frame 2 --dry-runבונה ובודק בריאות מול המסגרת החדשה בלי לגעת בשחרור החי, כך שתדעו לפני שאתם מתחייבים.- A frame is supported for 24 months from the day its successor ships. End of support is announced at the start of that window, not at the end.מסגרת נתמכת 24 חודשים מהיום שיורשה משוחרר. סיום התמיכה מוכרז בתחילת החלון הזה, לא בסופו.
Base image patches, kernel updates and TLS configuration are applied to every frame, immediately, without asking. A frame pins the contract, not the CVE surface. If a patch would break a documented guarantee we will tell you before it lands, and the only case where we would ship it anyway is one where not shipping it is worse.
עדכוני תמונת בסיס, עדכוני קרנל והגדרות TLS מיושמים על כל מסגרת, מיד, בלי לשאול. מסגרת מקבעת את החוזה, לא את משטח ה-CVE. אם תיקון היה שובר הבטחה מתועדת נודיע לכם לפני שהוא נוחת, והמקרה היחיד שבו נשחרר אותו בכל זאת הוא כשלא לשחרר גרוע יותר.
What we will not doמה לא נעשה
- Change what your pinned frame means after you have pinned it.לשנות את משמעות המסגרת שקיבעתם אחרי שקיבעתם אותה.
- Migrate you to a new frame automatically, on any schedule, for any reason.להעביר אתכם למסגרת חדשה אוטומטית, בכל לוח זמנים, מכל סיבה.
- Remove a field from the API response because it was inconvenient to keep.להסיר שדה מתשובת API כי היה לא נוח לשמור אותו.
- End support for a frame with less than 24 months of notice, or without a written migration path.לסיים תמיכה במסגרת בהתראה של פחות מ-24 חודשים, או בלי מסלול הגירה כתוב.