Ploaמרכז מידע

ה-⁠CLI

הפקודה ploa היא הדרך האחרת ל-⁠Ploa: מהטרמינל, ב-⁠CI, או בלי סוכן בכלל. היא בונה על המחשב שלך, בודקת את הפרויקט, שולחת את מה שבנית, מעלה גרסת אתר, ומריצה את שרת ה-⁠MCP שהסוכן שלך משתמש בו. מה שצריך את האישור שלך מחכה לו גם כשמבקשים מכאן. ‏ploa --help מציגה את הרשימה הזו בטרמינל.

התקנה ועדכון

curl -fsSL https://ploa.dev/install.sh | sh   # macOS and Linux; or: npm install -g @ploa/cli
irm https://ploa.dev/install.ps1 | iex           # Windows, in PowerShell
ploa update                                     # the newest version (--check only says whether there is one)
ploa --version                                  # or: ploa version, ploa -v

צריך Node 24 ומעלה. כשהותקנה מ-⁠npm, ‏ploa update אומרת להשתמש במקום זה ב-⁠npm install -g @ploa/cli@latest; ‏npx -y @ploa/cli <command> מריצה כל פקודה בלי להתקין. עוד בהתקנת ה-⁠CLI.

אפשרויות לכל פקודות הפרויקט

אפשרותמה היא עושה
‏--dir <path>התיקייה של האפליקציה. בלעדיה, התיקייה שבה אתה נמצא; פקודות הפרויקט עובדות גם מהתיקייה שמעל האפליקציה (למשל ריפו שבו האפליקציה ב-⁠mobile/).
‏--jsonפלט לסקריפטים, ב-⁠status,‏ icon,‏ preflight,‏ privacy,‏ files ו-⁠files push.
‏--no-waitבבניות ובבקשות: מתחילה וחוזרת, ועוקבים בלוח הבקרה.
‏-h,‏ helpרשימת הפקודות.

חשבון

פקודהמה היא עושה
‏ploa login [--no-browser] [--server <url>]מתחברת עם קוד שמאשרים בדפדפן, ושם בוחרים את הרמה (הרשאות ואישורים). ‏--no-browser מדפיסה את הקישור במקום לפתוח אותו; --server לשרת Ploa אחר במקום ploa.dev.
‏ploa logoutמתנתקת ומבטלת בשרת את הטוקן של המחשב הזה.
‏ploa whoamiמי מחובר: מייל, תפקיד, סביבת עבודה, רמה ושרת.
‏ploa update [--check]מתקינה את ה-⁠ploa החדשה ביותר. ‏--check רק אומרת אם יש כזו.
‏ploa doctorהאם המחשב הזה מוכן לבנות ולשלוח: ‏Node,‏ ploa,‏ git,‏ Xcode,‏ CocoaPods,‏ Java, ה-⁠Android SDK,‏ Flutter, מקום בדיסק, ההתחברות והאם התיקייה מקושרת, כל אחד עם התיקון שלו.

פרויקט

פקודהמה היא עושה
‏ploa init [--apple <name>] [--google <name>]מקשרת את האפליקציה הזו ל-⁠Ploa וכותבת ploa.json: מוצאת את האפליקציה ב-⁠Ploa לפי ה-⁠bundle ID או שם החבילה, או מוסיפה אותה. ‏--apple /‏ --google בוחרות את חיבור החנות כשיש בסביבת העבודה כמה. סוכן עושה את אותו הדבר עם ploa_link, ולכן כשעובדים עם סוכן אין בה צורך.
‏ploa init --aab <file> --ipa <file>מקשרת אפליקציה שנבנתה בדרך אחרת (Unity,‏ .NET MAUI…), עם המזהים מתוך מה שנבנה. מספיק אחד מהשניים.
‏ploa statusמה יש בחנויות על האפליקציה הזו עכשיו.
‏ploa iconשולחת עכשיו את האייקון של האפליקציה ל-⁠Ploa (‏status,‏ preflight והשחרורים עושים את זה לבד כשהוא השתנה).
‏ploa preflight [--github] [--changed]מה החנויות היו דוחות, לפני שבונים. ‏--github: ב-⁠GitHub Actions, נכנסת בשם ההרצה ומסמנת את השורות ב-⁠pull request. ‏--changed: בודקת כל אפליקציה שמקושרת לריפו שה-⁠pull request משנה.
‏ploa privacyמה הקוד מגלה על המידע שהוא אוסף, בשביל App Privacy ו-⁠Data safety.
‏ploa filesהקבצים שבנייה ב-⁠GitHub קוראת ואין אותם ב-⁠git, ואיפה כל אחד נמצא.
‏ploa files push [<path>…]שולחת אותם מכאן (google-services.json,‏ .env…) לאישור שלך ב-⁠ploa.dev; קבצים שלא אושרו נמחקים אחרי 24 שעות.

שחרור: אנדרואיד

# Build here, sign with the upload key Ploa keeps, straight to internal testing
ploa release android [--version-code <n|auto>]
# Ship a bundle built any way, with the version it says
ploa release android --aab app.aab
# Build and check here, keep the bundle, send nothing (before Google Play has the app, too)
ploa release android --no-upload
# Also ask a person to approve a rollout, and wait for the answer
ploa release android --promote production --rollout 10
# Promote something already uploaded
ploa release android --release <id> --promote production --rollout 10
# Build in your own Google Cloud, from what's pushed
ploa release android --gcp [--sha <commit>]
אפשרותמה היא עושה
‏--version-code <n|auto>קוד הגרסה: מספר, או auto לפנוי הבא. בלעדיה, זה שבפרויקט.
‏--aab <file>שולחת bundle שנבנה בכל דרך (Unity,‏ .NET MAUI, הגדרת Gradle משלך), עם הגרסה שכתובה בו.
‏--promote production|beta|alphaמבקשת את האישור שלך להעביר למסלול הזה, ומחכה לתשובה (‏--no-wait חוזרת מיד).
‏--rollout <percent>אחוז המשתמשים בהפצה הדרגתית, 1 עד 100. כברירת מחדל, כולם.
‏--release <id>עובדת על גרסה שכבר הועלתה במקום לבנות (עם --promote).
‏--gcp [--sha <commit>]בונה בפרויקט Google Cloud שלך עם Cloud Build, ממה שנדחף; ‏Google מחייבת את הדקות על הפרויקט הזה (מגדירים בהגדרות › בניות). ‏Ploa חותמת על ה-⁠bundle כמו תמיד: שום מפתח לא עובר ל-⁠Google.
‏--forceבונה גם כשהבדיקה המקדימה מוצאת בעיות.

הבנייה עוברת מהמחשב הזה ישר ל-⁠Google Play: ‏Ploa חותמת רק על קובץ החתימה שלה ופותחת את ההעלאה מול Google, כך שלא מפתח ההעלאה ולא הגישה של Ploa ל-⁠Google Play מגיעים למחשב הזה. אם ההעלאה הישירה לא עוברת, הבנייה עוברת במקום זה דרך Ploa. עוד בבניות וחתימה.

שחרור: ‏iOS

# Build on this Mac, signed with Ploa's key, then TestFlight
ploa release ios [--build-number <n|auto>]
# Ship an .ipa, .app or .xcarchive built any way
ploa release ios --ipa App.ipa
# Build and sign here without sending: a check of the build
ploa release ios --no-upload
# Apple builds and signs it in Xcode Cloud
ploa release ios --xcode-cloud [--workflow "Release"] [--branch main]
# Ask a person to approve each next step
ploa release ios --release <id> --submit [--replace]
ploa release ios --release <id> --withdraw
ploa release ios --release <id> --app-store
ploa release ios --release <id> --phased pause|resume|complete
אפשרותמה היא עושה
‏--build-number <n|auto>מספר הבנייה; עם auto, הפנוי הבא.
‏--ipa <file>שולחת אפליקציה שנבנתה בכל דרך, עם הגרסה שכתובה בה. אפליקציה שלא חתומה ל-⁠App Store (development,‏ ad hoc, לא חתומה) נחתמת כאן, בכל מחשב, באותה דרך.
‏--resignחותמת מחדש --ipa גם כשהוא כבר חתום ל-⁠App Store.
‏--submitמבקשת גם את האישור שלך להגיש ל-⁠App Review ברגע שהבנייה מגיעה ל-⁠TestFlight.
‏--no-uploadבונה וחותמת בלי לשלוח ל-⁠Apple.
‏--sign keychainהדרך הישנה: המפתח ב-⁠keychain זמני על ה-⁠Mac הזה בזמן ש-⁠Xcode חותם. כברירת מחדל המפתח נשאר ב-⁠Ploa, וה-⁠Mac הזה שולח ל-⁠Ploa רק את מה שהוא חותם עליו.
‏--xcode-cloud [--workflow <name>] [--branch <name>]‏Apple בונה וחותמת ב-⁠Xcode Cloud ממה שנדחף (‏main אלא אם --branch), ו-⁠Ploa עוקבת אחריה עד TestFlight; המפתח נשאר אצל Apple.
‏--release <id> --submit [--replace]מבקשת את האישור שלך להגיש בנייה מ-⁠TestFlight ל-⁠App Review. ‏--replace מוציאה את הבנייה של הגרסה שנמצאת עכשיו ב-⁠App Review ומגישה את זו במקומה.
‏--release <id> --withdrawמבקשת את האישור שלך למשוך את הגרסה מ-⁠App Review.
‏--release <id> --app-storeמבקשת את האישור שלך לשחרר ב-⁠App Store את הגרסה ש-⁠App Review אישר.
‏--release <id> --phased pause|resume|completeמבקשת את האישור שלך להשהות, להמשיך או לסיים את השחרור ההדרגתי של הגרסה.
‏--forceבונה גם כשהבדיקה המקדימה מוצאת בעיות.

בניות iOS רצות על ה-⁠Mac שלך, ב-⁠GitHub או ב-⁠Xcode Cloud. ‏ploa xcode-cloud מכינה את הריפו ל-⁠Xcode Cloud (ה-⁠ios/ של אפליקציית Expo נוצר אחרי ש-⁠Xcode Cloud משכפל אותה) ואומרת מה נשאר להגדיר ב-⁠Xcode. עוד בהגדרת Xcode Cloud.

אתרים ואפליקציות ווב

האתר של האפליקציה, באחסון של Ploa בכתובת חינמית <name>.ploa.app או בדומיין שלך. עוד בווב: אתר ואפליקציית ווב.

פקודהמה היא עושה
‏ploa web build [--site <address>] [--version <x.y.z>] [--message <note>] [--no-build] [--no-wait]בונה את האתר עם הפריימוורק שלו (Expo,‏ Vite,‏ Next static export,‏ Astro,‏ SvelteKit,‏ Nuxt,‏ Angular,‏ Gatsby,‏ Hugo,‏ Flutter ועוד) ושולחת את התיקייה הבנויה כגרסה חדשה. ‏Ploa ממספרת אותה (מ-⁠app.json או מ-⁠package.json, אלא אם --version), בודקת אותה ומעלה אותה לכתובת בדיקה משלה. ‏--no-build שולחת את מה שכבר בנוי; --create <address> יוצרת קודם את האתר כשאין בסביבת העבודה אף אחד. ‏ploa web deploy זהה.
‏ploa web release [<build>] [--site <address>] [--at <date and time>]מעלה לאוויר גרסה שנבדקה, החדשה ביותר שמחכה או הבנייה שצוינה, עכשיו או בזמן מסוים (כמו 2026-11-06T09:00). את זה מאשרים בעצמך ב-⁠ploa.dev, אלא אם הטוקן אוטונומי.
‏ploa web status [--site <address>]האתרים, הכתובות והגרסאות שלהם.
‏ploa web rollback [--site <address>] [--version <build>]חוזרת מיד לגרסה שהייתה באוויר לפני כן, או לזו שצוינה.
‏ploa web domain [<domain>] [--site <address>]מחברת דומיין שלך ומדפיסה את רשומות ה-⁠DNS שצריך להוסיף (Ploa לא מוכרת דומיינים). בלי דומיין, בודקת את הדומיינים של האתר.

השרת של האפליקציה

צד השרת של אפליקציית הווב: API משלה, משימות מתוזמנות ו-⁠Postgres, בענן של Ploa או ב-⁠Google Cloud שלך.

פקודהמה היא עושה
‏ploa serverאיפה השרת של האפליקציה עומד: הכתובת, הגרסה ומסד הנתונים שלו.
‏ploa server create --ploa | --own <project> [--region <region>]יוצרת אותו בענן של Ploa (ב-⁠Pro וב-⁠Team, עם המקום שהתוכנית נותנת לכל אפליקציה) או בפרויקט Google Cloud שלך, ש-⁠Google מחייבת אותך עליו (בכל תוכנית).
‏ploa server retryמנסה שוב: ליצור אותו אחרי כישלון, או למחוק אותו.
‏ploa server deploy [--folder <dir>] [--github [--sha <commit>]] [--no-wait]שולחת את תיקיית השרת (עם ה-⁠Dockerfile שלה, או Node,‏ Python,‏ Go,‏ Java,‏ Ruby,‏ PHP או .NET כמו שהם) כגרסה חדשה, או ש-⁠Ploa לוקחת אותו מהריפו של האפליקציה ב-⁠GitHub.
‏ploa server env [NAME=value…] [--secret] [--remove <NAME>]משתני הסביבה של השרת; הגדרה שלהם מפעילה מחדש את הגרסה שבאוויר איתם. ‏--secret שומרת את הערכים מוסתרים.
‏ploa server logs [--text <words>] [--since <time>] [--job <name>]הלוגים של השרת, מסוננים לפי מילים, זמן או משימה.
‏ploa server run "<command>"מריצה פקודה פעם אחת עם הגרסה שבאוויר (בלי SSH: הפלט בלוגים).
‏ploa server jobs [--name <n> --schedule "<cron>" --command "<cmd>"] [--remove <n>]מציגה את המשימות המתוזמנות, מוסיפה או משנה אחת, או מסירה אחת.
‏ploa server sql "<query>" [--write]שאילתה על מסד הנתונים בתפקיד של השרת עצמו; לקריאה בלבד אלא אם --write, שצריכה רמת פרודקשן.

ה-⁠Mac הזה כ-⁠runner של GitHub

לבניות iOS ב-⁠GitHub, מה-⁠workflow של הריפו עצמו, על ה-⁠Mac שלך.

פקודהמה היא עושה
‏ploa runner add [--repo <owner/name>]מורידה את ה-⁠runner של GitHub, רושמת אותו לריפו ומריצה אותו כשירות. כשהיא מבקשת, מדביקים את הטוקן מהדף "New self-hosted runner" של GitHub, או מעבירים אותו בצינור (pbpaste | ploa runner add), אף פעם לא בשורת הפקודה.
‏ploa runner statusה-⁠runners על ה-⁠Mac הזה, והאם כל אחד רץ.
‏ploa runner remove [--repo <owner/name>]עוצרת אחד, מסירה אותו מ-⁠GitHub ומוחקת אותו.

סוכנים

פקודהמה היא עושה
‏ploa mcpשרת ה-⁠MCP של Ploa על stdio. הסוכנים מפעילים אותו בעצמם, בתיקייה של האפליקציה או עם --dir.
‏ploa mcp install [--agent claude,cursor,vscode,codex]מוסיפה את Ploa להגדרות ה-⁠MCP של הסוכנים (כברירת מחדל, אלה שנמצאו על המחשב הזה). הפרטים בחיבור הסוכן.

ב-⁠GitHub Actions ובשרתים של Ploa

אלה רצות בתוך בניות; לא מקלידים אותן בעצמך.

  • ‏ploa release android|ios --github --app=<id> --queued=<id> --nonce=<n>: הבנייה ש-⁠Ploa התחילה ב-⁠GitHub. ה-⁠workflow ש-⁠Ploa כותבת מריץ אותה, במכונות של GitHub, או ל-⁠iOS על ה-⁠Mac שלך כ-⁠runner או על ה-⁠Mac של GitHub כשבעלים התירו. ראה בניות ב-⁠GitHub Actions.
  • ‏ploa preflight --github: הבדיקה בכל pull request.
  • ‏ploa web-host רצה במכונות האחסון של Ploa עצמה.

משתני סביבה

משתנהמה הוא עושה
‏PLOA_TOKENטוקן מהגדרות › טוקנים, במקום ההתחברות השמורה (ל-⁠CI ולשרתים).
‏PLOA_SERVERשרת Ploa אחר במקום השמור.
‏PLOA_APPהמזהה של האפליקציה, ל-⁠ploa preflight ולבניות ב-⁠GitHub Actions כשאין ploa.json. שאר הפקודות, ושרת ה-⁠MCP, צריכים תיקייה מקושרת.
‏PLOA_CONFIGאיפה ההתחברות נשמרת, במקום ~/.config/ploa/config.json.

‏ploa.json

‏ploa init כותבת אותו בתיקייה של האפליקציה, או הסוכן שלך עם ploa_link: המזהה של האפליקציה ב-⁠Ploa והשרת. אין בו סודות; עושים לו commit כדי שהצוות, הסוכנים וה-⁠CI יעבדו על אותה אפליקציה. אותו קובץ יכול להחזיק גם את הכללים של האתר (הכללים של האתר), והם נשמרים כשהוא נכתב מחדש.