CLI referenceממשק שורת פקודה

One binary, nine commands. Every one of them takes --json and prints a stable object, so anything you can do by hand a script or an agent can do too.

קובץ הרצה אחד, תשע פקודות. כל אחת מהן מקבלת ‎--json ומדפיסה אובייקט יציב, כך שכל מה שאפשר לעשות ידנית יכול לעשות גם סקריפט או סוכן.

Installהתקנה

terminal
npm i -g @shipyard/cli      # or: pnpm add -g @shipyard/cli
shipyard --version

Global flagsדגלים גלובליים

--jsonMachine-readable output. No colour, no spinner, no progress redraw. Errors go to stderr as JSON too.פלט קריא-מכונה. בלי צבע, בלי ספינר, בלי ציור מחדש. שגיאות יוצאות ל-stderr גם הן כ-JSON.
--project <id>Override the project linked to this directory.עקיפת הפרויקט המקושר לתיקייה הנוכחית.
--env <name>Target environment. Defaults to staging.סביבת היעד. ברירת המחדל היא staging.
--no-inputNever prompt. Any missing required answer becomes a non-zero exit instead of a question.לעולם לא לשאול. תשובה חסרה הופכת לקוד יציאה שונה מאפס במקום לשאלה.

shipyard loginshipyard login

Opens a browser, waits for approval, writes ~/.shipyard/credentials at mode 0600. On a headless machine use shipyard login --token and paste a key from the panel.

פותח דפדפן, ממתין לאישור, וכותב ~/.shipyard/credentials בהרשאות 0600. במכונה ללא ממשק גרפי משתמשים ב-shipyard login --token ומדביקים מפתח מהפאנל.

shipyard initshipyard init

Detects the framework and writes shipyard.yaml. Detection is a guess; the file it writes is yours to correct. Pass --builder to skip detection.

מזהה את ה-framework וכותב shipyard.yaml. הזיהוי הוא ניחוש; הקובץ שנכתב הוא שלכם לתיקון. אפשר להעביר --builder כדי לדלג על הזיהוי.

Buildersבנאים

nextjs-standaloneNext.js with output: "standalone". The smallest correct Next image.Next.js עם output: "standalone". התמונה הקטנה והנכונה ביותר ל-Next.
vite-staticVite, Astro, plain SPA. Built once, served as files.Vite, Astro, SPA רגיל. נבנה פעם אחת, מוגש כקבצים.
node-genericAnything with a start script. The safe fallback.כל דבר עם start script. ברירת המחדל הבטוחה.
bunBun runtime.סביבת ריצה Bun.
staticA directory of files. No build step at all.תיקיית קבצים. ללא שלב בנייה כלל.
dockerfileYour Dockerfile, your rules. Still scanned like everything else.ה-Dockerfile שלכם, הכללים שלכם. עדיין נסרק כמו כל דבר אחר.

shipyard deployshipyard deploy

terminal
shipyard deploy                        # staging
shipyard deploy --env production       # confirms first
shipyard deploy --message "fix cart"   # shows up in history
shipyard deploy --json                 # for scripts and agents

Exits 0 only when the release is live and healthy. A failed healthcheck, a failed build and a critical scan finding are all non-zero, and in every case the previous release keeps serving.

מחזיר 0 רק כשהשחרור חי ותקין. כישלון בבדיקת בריאות, כישלון בנייה וממצא סריקה קריטי כולם מחזירים ערך שונה מאפס, ובכל המקרים השחרור הקודם ממשיך לשרת.

What gets uploadedמה מועלה

Your working tree minus .gitignore and .shipyardignore. Uncommitted changes are included, which is usually what you want during development and never what you want in CI. In CI, deploy from a clean checkout.

עץ העבודה שלכם פחות .gitignore ו-.shipyardignore. שינויים שלא בוצע להם commit נכללים, וזה בדרך כלל מה שרוצים בפיתוח ולעולם לא מה שרוצים ב-CI. ב-CI, פרסו מ-checkout נקי.

shipyard logsshipyard logs

terminal
shipyard logs -f                    # follow
shipyard logs --since 15m           # last quarter hour
shipyard logs --deployment dep_01J8ZQ4K7M
shipyard logs --json | jq 'select(.level == "error")'

Under --json each line is one object with ts, level, message and source. Under a TTY it is coloured and wrapped.

תחת --json כל שורה היא אובייקט אחד עם ts, level, message ו-source. ב-TTY הפלט צבעוני ועטוף.

shipyard psshipyard ps

What is running, in which region, since when, and on which frame.

מה רץ, באיזה אזור, מאיזה רגע, ועל איזו מסגרת.

terminal
$ shipyard ps
ENV          RELEASE          FRAME  REGION   UP        STATUS
production   dep_01J8ZQ4K7M   1      il-tlv   6d 4h     healthy
staging      dep_01J91TTB2P   1      il-tlv   22m       healthy

shipyard rollbackshipyard rollback

terminal
shipyard rollback                              # previous release
shipyard rollback --to dep_01J8ZQ4K7M          # a specific one

Swaps the serving release. No rebuild, so it completes in seconds. The release you rolled away from is still listed and can be rolled forward to again.

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

shipyard envshipyard env

terminal
shipyard env list
shipyard env set API_TOKEN --from-stdin
shipyard env set SESSION_SECRET --generate
shipyard env unset OLD_FLAG
shipyard env pull > .env.local          # names only, values are blank
shipyard env push .env.production       # bulk set from a file

shipyard domainsshipyard domains

terminal
shipyard domains list
shipyard domains add app.example.com
shipyard domains remove app.example.com

add prints the exact DNS record to create. Once it resolves, TLS is issued within about a minute and renewed forever after without a reminder.

add מדפיס את רשומת ה-DNS המדויקת שיש ליצור. ברגע שהיא נפתרת, תעודת TLS מונפקת תוך כדקה ומתחדשת מעצמה מאז והלאה.

shipyard open / whoamishipyard open / whoami

terminal
shipyard open                 # browser, current environment
shipyard whoami               # org, role, key scopes, region

whoami is the fastest way to answer “why am I getting a 404 on something that exists”. Usually the answer is that the key is scoped to a different org.

whoami היא הדרך המהירה לענות על ”למה אני מקבל 404 על משהו שקיים“. בדרך כלל התשובה היא שהמפתח מוגבל לארגון אחר.

Exit codesקודי יציאה

0Success.הצלחה.
1Generic failure. The message says which.כישלון כללי. ההודעה מפרטת.
2Bad usage: unknown flag, missing argument.שימוש שגוי: דגל לא מוכר, ארגומנט חסר.
3Not authenticated, or the key lacks the scope.לא מאומת, או שלמפתח חסרה ההרשאה.
4Build failed.הבנייה נכשלה.
5Security scan blocked the release.סריקת האבטחה חסמה את השחרור.
6Healthcheck never passed. Previous release still serving.בדיקת הבריאות לא עברה. השחרור הקודם עדיין משרת.