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התקנה
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
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 רק כשהשחרור חי ותקין. כישלון בבדיקת בריאות, כישלון בנייה וממצא סריקה קריטי כולם מחזירים ערך שונה מאפס, ובכל המקרים השחרור הקודם ממשיך לשרת.
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
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.
מה רץ, באיזה אזור, מאיזה רגע, ועל איזו מסגרת.
$ 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
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
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
--from-stdinkeeps the value out of your shell history. Prefer it.--from-stdinשומר את הערך מחוץ להיסטוריית ה-shell. עדיף להשתמש בו.env pullwrites names with empty values. There is no read path for a secret, including this one.env pullכותב שמות עם ערכים ריקים. אין מסלול קריאה לסוד, כולל זה.- Changing a variable does not restart anything. The next deploy picks it up.שינוי משתנה לא מפעיל שום דבר מחדש. הפריסה הבאה תיקח אותו.
shipyard domainsshipyard domains
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
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.בדיקת הבריאות לא עברה. השחרור הקודם עדיין משרת.