תרחישי שימוש

21 מתודות פריסה, ו-10 מהן נושאות את הקוד שלך.

תרחיש שימוש בפלטפורמה הזאת אינו קטגוריה שיווקית, הוא שם של מתודה. config.json מצהיר על 21 מתודות בדיוק ששמן מתחיל ב-deploy_, config_dev.json מצהיר על אותן 21, וכל צורת פריסה ש-Xuda מציעה היא אחת מהרשומות האלה. עשר מהן שולחות גרסת בנייה של הפרויקט, ושדה אחד מגלה אילו עשר: אלה הרשומות שמקבלות data.release_doc_id. אחת עשרה האחרות מקצות תשתית או כותבות רשומה. אותן עשר מגדירות כולן את req.data.deploy_type ומעבירות לפונקציה משותפת אחת, deploy_app, שאינה מוצהרת בעצמה ב-cpi_methods, ולכן אין קריאת פריסה גנרית שאפשר לבצע. בוחרים דלת כניסה לפי שם, והקוד המשותף שמאחוריה קורא את הסוג מתוך הבקשה. רצפת המסלול כתובה על כל רשומה ולא בעמוד תמחור: deploy_mini_app היא המתודה היחידה בכל הקטלוג בן 1010 הרשומות שנושאת min_plan free, שתים עשרה מתודות deploy_ נושאות min_plan pro, שתיים נושאות agency, ושש אינן נושאות min_plan כלל, כלומר כולם עוברים את השער הזה. לפי שער המסלול לבדו, 7 מתוך 21 נגישות ב-Free, 19 ב-Pro, 19 ב-Team ו-21 ב-Agency, מול מחירי מנוי של $0, $49, $149 ו-$399 לחודש. העמוד הזה עובר על שמונת הדפוסים שאיתם אנשים באמת מגיעים, נוקב בשם המתודה שכל אחד מהם נפתר אליה, ונוקב גם באלה שנפתרים ללא כלום.

10 מקבלות מזהה גרסה
7 נגישות בחשבון Free
אין קריאת פריסה גנרית
21 מתודות פריסה, ו-10 מהן נושאות את הקוד שלך.
שמונה דפוסים, שמונה דלתות כניסה

התרחיש שאיתו מגיעים, והמתודה שהוא נפתר אליה.

אנשים לא מגיעים ומבקשים deploy_spa. הם מגיעים עם צורה בראש: אפליקציה ללקוחות, אתר בלי קוד מאחוריו, משימה שרצה בשלוש לפנות בוקר, עותק לבדוק מולו. כל אחת מהן נפתרת לרשומה אחת או שתיים בעלות שם ב-cpi_methods, והפתרון נקבע ברגע הקריאה ולא נבחר בזמן ריצה. כל שורה היא חלופה אחת, והתגיות לצידה הן הקריאות שהיא באמת עולה.

שניים מתוך השמונה האלה אינם קריאה אחת. deploy_static_website מפרסמת דרך deploy_site, ואפליקציה מאוזנת עומס דורשת deploy_spa אחת לכל עותק לפני של-deploy_load_balancer יהיה בכלל בין מה לפזר תעבורה. הצימוד נקבע לפי השם שאליו נשלחה הבקשה ולא בשום מקום אחר: מכיוון ש-deploy_app עצמה אינה מוצהרת ב-cpi_methods, אין קריאה שמקבלת סוג פריסה כארגומנט.
21

מתודות ששמן מתחיל ב-deploy_

7

מתוכן נגישות בחשבון Free

12 מתוך 19

מתודות בקטלוג החסומות מתחת ל-Pro שהן פריסות

0

מתודות פריסה החסומות מתחת ל-Team

הצורה של קריאה אחת

מה קריאת פריסה מבקשת, ומה היא עושה עם התשובה.

ל-21 הרשומות אין חתימה משותפת, אבל ארבעה שדות בהצהרה מספרים כמעט הכול על רשומה מסוימת עוד לפני פתיחת ה-handler שלה: אם היא מקבלת מזהה גרסה, אם היא מקבלת אזור, אם היא רצה כמשימה במעקב, ואיזה סקריפט אותה משימה מריצה. שני שדות נוספים קובעים מי בכלל רשאי לקרוא לה. 14 מתוך 21 דורשות הרשאת admin ו-7 דורשות הרשאת user, ו-20 מתוך 21 נושאות private: true, הדגל שאף מפתח API חיצוני אינו חוצה בשום מצב. פריסה היא פעולה של מפעיל מתוך סשן מחובר, לא משהו שאינטגרציה יורה.

  • מזהה גרסה, או כלום. 10 מתוך 21 מקבלות data.release_doc_id, ואלה בדיוק העשר ששולחות גרסת בנייה של הפרויקט. שש מהן נקשרות לתוכנית Studio אחת דרך data.prog_id שהוא שדה חובה: embed, mini_app, preview, pwa, spa ו-user_group. deploy_mpa מקבלת data.route_id במקומו. אחת עשרה המתודות האחרות מקצות תשתית או כותבות רשומה ואינן נוגעות בגרסת בנייה כלל.
  • אזור, בדרך כלל. 16 מתוך 21 מקבלות אזור. החמש שלא הן instance, marketplace, mini_app, site ו-static_website. שתיים מהן כותבות מסמך ב-xuda_master ואינן מקצות שרת, שתיים מפרסמות קבצים לאחסון, והחמישית היא הפריסה החינמית, שאינה מקבלת אזור ואינה מקבלת שדות create_datacenter כלל.
  • משימה, בדרך כלל. 14 מתוך 21 רצות כמשימה במעקב עם job_timeout של 1800000 ms, שהם 30 דקות, ומדווחות התקדמות דרך ה-job_steps המוצהרים שלהן. השבע האחרות חוזרות בלי משימה: another, datacenter, instance, marketplace, site, static_website ו-xucode. קריאה שחוזרת מיד עושה ניירת, לא הקצאה.
  • סקריפט אחד, תשע פעמים. api, cron, embed, emitter, mpa, preview, pwa, spa ו-user_group מריצות סקריפט זהה בן 12 שלבים עם החלפת שם הסוג: התחלת התהליך, ואז יצירה, חומת אש, תוכנית גיבוי, התחברות והתקנה עבור שרת מרכז הנתונים, ואז אותם חמישה עבור שרת הפריסה, ואז הפעלת השרת. קריאה אחת יוצרת אפוא שני שרתים ולא אחד, אלא אם מעבירים data.app_datacenter כדי לעשות שימוש חוזר במרכז נתונים קיים. השדה הזה אופציונלי, וכך גם שדות create_datacenter שלצידו.
21 המתודות, לפי שדה
מקבלות data.release_doc_id
10
אלה ששולחות גרסת בנייה, וכולן מעבירות ל-deploy_app
מקבלות אזור
16
רצות כמשימה במעקב
14
job_timeout 1800000 ms, 30 דקות
חולקות סקריפט אחד בן 12 שלבים
9
שני שרתים בכל קריאה, אלא אם עושים שימוש חוזר במרכז נתונים
שער המסלול

ארבעה מחירים, ורק שניים מהם משנים מה אפשר לפרוס.

שער המסלול הוא ארבע שורות של חשבון. isValidPlan בקובץ cpi/http_module/index.mjs בשורות 542 עד 547 קורא את min_plan מתוך רשומת הקונפיגורציה, מחזיר true כשהמפתח חסר, ואחרת משווה שתי דרגות ב-PLAN_OBJ: free 0, pro 1, team 2, agency 3. בהחלה על 21 מתודות ה-deploy_*, זו כל הטבלה. בקטלוג יש 19 מתודות החסומות מתחת ל-Pro ו-12 מהן הן deploy_*, כך שמנוי Pro מוציא את רוב עצמו בדיוק כאן. ובדיוק מתודה אחת מכל 1010 הרשומות נושאת min_plan free, deploy_mini_app, הפריסה היחידה שחשבון חינמי יכול להתחיל. המחירים הם לחודש.

Free, $0
Pro, $49
Team, $149
Agency, $399
מתודות deploy_* שעוברות את שער המסלול7 מתוך 2119 מתוך 2119 מתוך 2121 מתוך 21
מה הדרגה הזאת מוסיפה על זו שמתחתיה6 המתודות שאינן מצהירות min_plan כלל, ובנוסף deploy_mini_app12: another, api, cron, datacenter, embed, emitter, load_balancer, mpa, preview, pwa, spa, user_groupכלום. אף מתודת deploy_* אינה נושאת min_plan teamשתיים: deploy_instance ו-deploy_marketplace, ושתיהן כותבות מסמך ב-xuda_master בלי להקצות שרת
פריסות שנושאות גרסת בנייה של הפרויקט, אלה שמקבלות data.release_doc_id1 מתוך 10, deploy_mini_app10 מתוך 1010 מתוך 1010 מתוך 10
קישור שמחלקים החוצה: spa, pwa, embed, previewלא, כל הארבע הן proכן, משימה בת 12 שלבים לכל אחתאותן 4 כמו ב-Proאותן 4 כמו ב-Pro
VPS, webserver, או full stack VPS עם ה-xuda CLI עליוכן, כל השלוש אינן מצהירות min_planכןכןכן
haproxy מול הפריסות שלך מאותו סוגלאdeploy_load_balancer, 6 שלביםכןכן
סביבה שנייה של אפליקציה שכבר רצהלאdeploy_another, שם, אזור וסוג שרת חדשיםכןכן
לאן קריאה נוחתת

קריאת פריסה אחת, שלושה יעדים, והראשון בונה שני שרתים.

עשר מתוך 21 המתודות פורסות גרסת בנייה של הפרויקט. הן אלה שמקבלות data.release_doc_id, כל אחת מהן מגדירה req.data.deploy_type, וכולן מעבירות לפונקציה משותפת אחת, deploy_app, בקובץ cpi/deploy_module/index.mjs שורה 116. deploy_app עצמה אינה מוצהרת ב-cpi_methods, ולכן אין קריאת פריסה גנרית: בוחרים דלת כניסה, והדלת היא שנוקבת בסוג. 11 האחרות מקצות מכונה או כותבות רשומה. כדאי לקרוא את הענף הראשון פעמיים, כי קריאת deploy_spa אחת מקצה שרת מרכז נתונים לפני שהיא מקצה את שלך.

14 מתוך 21 מצהירות על הרשאת admin והשבע האחרות על הרשאת user, ו-20 מתוך 21 נושאות private: true. פריסה היא פעולה של סשן בלוח הבקרה מתוך תכנון: מפתח API חיצוני אינו חוצה את הדגל הזה, לא משנה לאיזה ענף הייתה הכוונה.
איך עושים את זה

שלוש פעולות, והאמצעית היא סרגל התקדמות שמסתכלים בו.

לא אשף. מה רשומת הקונפיגורציה מחייבת לספק, מה המשימה מדווחת בחזרה, ומה נשאר בידיים כשהשורה האחרונה אומרת הפעלת השרת.

  1. 01

    בחירת דלת הכניסה, הגרסה והתוכנית

    אין קריאת פריסה גנרית. deploy_app משותפת לכל 10 מתודות הגרסה אך אינה מוצהרת ב-cpi_methods, ולכן קוראים ל-deploy_spa, ל-deploy_pwa, ל-deploy_embed, ל-deploy_preview וכן הלאה, והבחירה הזאת מגדירה את deploy_type. כל אחת מהעשר מקבלת data.release_doc_id, גרסת הבנייה שנשלחת. שש מהן, embed, mini_app, preview, pwa, spa ו-user_group, מקבלות גם data.prog_id כשדה חובה שנוקב בתוכנית Studio האחת שאליה הפריסה נקשרת, ו-deploy_mpa מקבלת data.route_id במקומו. אזור הוא שדה ב-16 מתוך 21.

  2. 02

    מעקב אחרי הסקריפט המוצהר בזמן שהוא רץ

    job_steps אינו מכונת מצבים פנימית, הוא טקסט ההתקדמות כלשונו. 14 מתוך 21 רושמות משימה במעקב עם job_timeout 1800000 ms, תקרה של 30 דקות. פריסת קישור מדווחת 12 שורות, deploy_mini_app מדווחת 11, deploy_full_stack_vps 8, deploy_vps ו-deploy_webserver 7 כל אחת, deploy_load_balancer 6. השבע האחרות אינן מצהירות על שלבים ועונות בלי משימה: another, datacenter, instance, marketplace, site, static_website ו-xucode.

  3. 03

    קבלת השרת המופעל

    השלב האחרון בכל סקריפט הקצאה הוא הפעלת השרת, ומה שנשאר אחריו הוא מכונה עם האזור, חומת האש ותוכנית הגיבוי שאותו סקריפט קבע. משם deploy_load_balancer מציבה haproxy מול כמה פריסות מאותו סוג עם בדיקות תקינות ומעבר לגיבוי בכשל, ו-deploy_another פורסת מחדש את כל האפליקציה תחת שם, אזור וסוג שרת חדשים, ומתפשטת לפריסות הבנות שלה. שתיהן min_plan pro.

התדפיס

שתים עשרה שורות, ושש מהן הן מכונה שאיש לא נקב בשמה.

מערך ה-job_steps של deploy_spa לפי הסדר, בדיוק כפי ש-config.json מצהיר עליו וכפי שסרגל ההתקדמות מקריא אותו בחזרה. אותן 12 שורות, עם החלפת שם הסוג, מוצהרות גם על deploy_api, deploy_cron, deploy_embed, deploy_emitter, deploy_mpa, deploy_preview, deploy_pwa ו-deploy_user_group. כדאי לקרוא קודם את שורות 02 עד 06: הן שרת מרכז נתונים.

POST /cpi/deploy_spa job_timeout 1800000 ms
01 initiating process
02 creating datacenter server
03 setting datacenter firewall
04 setting datacenter backup plan
05 connecting to datacenter server
06 installing datacenter resources
שורות 02 עד 06 הן שרת שני. אפשר להעביר data.app_datacenter כדי לעשות שימוש חוזר במרכז נתונים שכבר רץ
07 creating spa server
08 setting spa firewall
09 setting spa backup plan
10 connecting to spa server
11 installing spa resources
12 activating the server
deploy_mini_app מריצה 11 מהן: אין שלב יצירת מרכז נתונים, ואין שדה אזור להגדיר
תשע מתוך 21 מריצות בדיוק את הסקריפט הזה. חמש מריצות סקריפט קצר יותר: mini_app ב-11 שורות, ו-vps, webserver, full_stack_vps ו-load_balancer בין 6 ל-8. שבע הנותרות אינן מצהירות על שלבים ועונות בלי משימה.
מגבלות בכנות

שמונה מגבלות, שלוש מהן מתודות שמוצהרות ובכל זאת מסרבות לרוץ.

  • Router אינו נפרס. deploy_mpa מוצהרת, חסומה מתחת ל-pro, ומגדירה את req.data.deploy_type ל-mpa, ערך שחסר במערך deploy_type ב-config.json, ולכן deploy_app דוחה אותו עם קוד -2 בקובץ cpi/deploy_module/index.mjs בשורות 139 עד 141. config_dev.json כן מפרט את mpa, ומפרט אותו גם כ-beta, ולכן הוא נדחה ארבע שורות מאוחר יותר במקום. פריסת router מרובת עמודים אינה משהו שאפשר להתחיל היום.
  • Emitter הוא beta בקונפיגורציה שנשלחת. המחרוזת emitter יושבת ב-deploy_type_in_beta בקובץ config.json, ולכן deploy_app מחזירה קוד -2 בקובץ cpi/deploy_module/index.mjs בשורות 143 עד 144. config_dev.json כבר הסיר אותה מהרשימה הזאת, כלומר דפוס ה-change feed רץ על dev ונדחה בעותק שבמאגר. המתודה מוצהרת וצינור ההקצאה שמאחוריה הוא אותו צינור ש-cron משתמשת בו. השער הוא רשומה אחת במערך.
  • אף מתודה אינה בונה קובץ בינארי ל-iOS, ל-Android או ל-macOS. deploy_ios, deploy_android ו-deploy_macos קיימות בקובץ cpi/deploy_module/index.mjs בשורות 1388 עד 1405, ואף לא אחת מהשלוש מוצהרת ב-cpi_methods, ולכן שום דבר שמגיע דרך /cpi אינו יכול להגיע אליהן. דפוס אפליקציית המובייל הישן בוטל ולא נדחה למועד אחר.
  • אין סוג פריסה של שיתוף פעולה בזמן אמת. אף אחת מ-21 המתודות אינה מקצה websocket, ערוץ נוכחות או משטח CRDT. הדבר הקרוב ביותר בקבוצה, deploy_emitter, הוא עבודת batch בצד השרת שמופעלת על ידי change feed של מסד נתונים, וממילא הוא נדחה כ-beta.
  • MCP Server מופיע כסוג פריסה בשתי הקונפיגורציות, יושב ב-deploy_type_in_beta בשתיהן, ואין לו בכלל רשומת deploy_mcp ב-cpi_methods, ולכן אין למה לקרוא עוד לפני שער ה-beta. פריסת MCP לכל פרויקט אינה קיימת.
  • Team עולה $149 מול Pro ב-$49 ואינו קונה דבר בעמוד הזה. אפס מתודות deploy_ נושאות min_plan team, ולכן גם Pro וגם Team מגיעים ל-19 מתוך 21. Agency ב-$399 מוסיף בדיוק שתיים נוספות, deploy_instance ו-deploy_marketplace, ושתיהן יוצרות מסמך ב-xuda_master ואינן מקצות שרת.
  • deploy_xucode היא רשומת ה-deploy_ היחידה בלי מפתח microservice, ו-http_module חוזר מוקדם כשחסר microservice, בקובץ cpi/http_module/index.mjs בשורות 942 עד 944, ולכן הקריאה לעולם אינה מגיעה ל-handler שלה בקובץ cpi/deploy_module/index.mjs שורה 1777. היא גם היחידה מבין ה-21 שמשמיטה את private.
  • פריסת אתר סטטי אינה מריצה קוד. deploy_static_website קוראת תיקיית Drive ומעבירה אותה ל-deploy_site, שמעלה את הקבצים ל-R2 ומחליפה מצביע KV באופן אטומי. בלי שרת, בלי cron, בלי API, בלי מסד נתונים. מטפל בטפסים או משימה מתוזמנת הם פריסה שנייה על שרת שני.
לפני בחירת דפוס

מה באמת ניתן לפריסה היום

שש תשובות שנקראו מתוך config.json ומתוך cpi/deploy_module/index.mjs, ולא מתוך האשף שיושב מעליהם.

צפייה

צפייה בפריסה יוצאת לדרך.

שנים עשר שלבים, שני שרתים ומזהה משימה אחד עם timeout של 30 דקות עליו. אותו סקריפט שתשע מתוך 21 המתודות מריצות, עם החלפת שם הסוג.

קריאת הצהרת המתודה לפני בחירת הדרגה.

לכל אחת מ-21 רשומות ה-deploy_ יש חוזה משלה בקובץ config.json: השדות המוקלדים שהיא מקבלת, אם היא מקבלת release_doc_id, שלבי המשימה שהיא תעבור והתקרה שלהם, ההרשאה שהיא דורשת, ורצפת ה-min_plan שמתחתיה. הרשומה הזאת היא ההסכם, לא האשף שמצויר מעליה. כדאי לברר איזו צורה באמת נפרסת, לקרוא את אותה רשומה אחת, ואז לרכוש את הדרגה ש-min_plan שלה נוקב בה. שש מתוך 21 אינן נוקבות במסלול כלל, אחת נוקבת ב-free, שתים עשרה נוקבות ב-pro, שתיים נוקבות ב-agency, ואף פריסה בשום מקום אינה נוקבת ב-team.