La commande postship
La CLI officielle — s'installe en une ligne, se connecte à votre compte depuis le navigateur, vérifie une URL, attend un ship, bloque une fusion. Une page par commande.
Mis à jour le 28 septembre 2026
Sur cette page
- Installer et se connecter
- Au quotidien
- L'interface
- Dans une CI
- Ce que PostShip fait
- Les commandes
- Les codes de sortie
- Dans GitHub Actions
- Limites et plans
- Dépannage
- « Aucune clé : postship login, ou posez POSTSHIP_TOKEN. »
- « Clé d'API invalide ou révoquée. Relancez postship login. »
- « Projet introuvable. »
- watch refuse de démarrer
- Vérifier depuis votre CI
- Le jeton
- L'appel
- Les codes de sortie, et pourquoi 1 n'est pas 2
- Quota
- Dépannage
- Recettes CI
- GitHub Actions : la preview d'une pull request
- GitHub Actions : la prod, après un déploiement
- GitLab CI : le rapport JUnit
- Vercel en ligne de commande, puis wait
- Le script du lundi matin
- Voir aussi
- postship login
- Ce que PostShip fait
- Exemples
- Codes de sortie
- Dépannage
- Voir aussi
- postship logout
- Ce que PostShip fait
- Exemples
- Codes de sortie
- Voir aussi
- postship status
- Ce que PostShip fait
- Exemples
- Codes de sortie
- Voir aussi
- postship check
- Ce que PostShip fait
- Exemples
- Codes de sortie
- Dépannage
- Voir aussi
- postship projects
- Ce que PostShip fait
- Exemples
- Codes de sortie
- Dépannage
- Voir aussi
- postship incidents
- Ce que PostShip fait
- Exemples
- Codes de sortie
- Dépannage
- Voir aussi
- postship ship
- Ce que PostShip fait
- Exemples
- Codes de sortie
- Dépannage
- Voir aussi
- postship ships
- Ce que PostShip fait
- Exemples
- Codes de sortie
- Voir aussi
- postship urls
- Ce que PostShip fait
- Exemples
- Codes de sortie
- Voir aussi
- postship wait
- Ce que PostShip fait
- Exemples
- Codes de sortie
- Dépannage
- Voir aussi
- postship gate
- Ce que PostShip fait
- Exemples
- Codes de sortie
- Voir aussi
- postship watch
- Ce que PostShip fait
- Exemples
- Codes de sortie
- Dépannage
- Voir aussi
- postship open
- Ce que PostShip fait
- Exemples
- Codes de sortie
- Dépannage
- Voir aussi
- postship whoami
- Ce que PostShip fait
- Exemples
- Codes de sortie
- Voir aussi
- postship doctor
- Ce que PostShip fait
- Exemples
- Codes de sortie
- Voir aussi
- postship init
- Ce que PostShip fait
- Exemples
- Codes de sortie
- Voir aussi
- postship update
- Ce que PostShip fait
- Exemples
- Codes de sortie
- Dépannage
- Voir aussi
- postship uninstall
- Ce que PostShip fait
- Exemples
- Codes de sortie
- Dépannage
- Voir aussi
- postship completion
- Ce que PostShip fait
- Exemples
- Codes de sortie
- Voir aussi
- postship docs
- Ce que PostShip fait
- Exemples
- Codes de sortie
- Voir aussi
Un binaire qui parle à https://postship.fr/api/v1 comme vous parleriez à l'Aperçu. Node 18 ou plus, aucune dépendance. Le paquet npm est postship, publié par PostShip ; l'action GitHub est titilyonnais/postship-check@v1, dépôt public github.com/titilyonnais/postship-check. Rien d'autre ne vient de nous.
Installer et se connecter
npm i -g postship
postship loginlogin affiche un code à 8 caractères et ouvre le navigateur sur postship.fr. Vous vérifiez que le code est le même, vous cliquez « Autoriser ce terminal » : la CLI reçoit sa clé et l'écrit dans ~/.config/postship/config.json (mode 0600, lisible par vous seul). Vous ne voyez jamais la clé, vous ne la copiez nulle part. Le lien vaut 10 minutes.
Chaque appareil connecté apparaît dans Réglages de l'espace → API, carte « Connecter la CLI », avec le nom de la machine, son dernier usage et son expiration : une clé de CLI expire après 90 jours sans usage, et se révoque d'un clic. 10 clés actives au maximum par personne et par espace.
Ensuite, dans le dossier d'un site :
postship init
postshipinit choisit le projet dans la liste (flèches, Entrée) et écrit ./.postship.json — commitable, sans clé. postship tapé seul ouvre l'interface plein écran : la connexion au premier lancement, puis vos projets et leurs incidents, au clavier.
Au quotidien
git push && postship wait --head --notify # le verdict du commit poussé, en notification
postship watch --notify # les incidents de tous vos projets, en direct
postship check example.com # une adresse, un verdictwait --head attend le ship du commit courant du dépôt ; watch sans projet suit tous vos projets actifs et sonne quand un incident s'ouvre ou se ferme. Dans un terminal, les verdicts ont leur symbole (✓ pass, × fail), le Ship Score sa jauge, et une roue tourne pendant les attentes — rien de tout cela en CI, dans un tube ou avec --json.
L'interface
Tapé seul dans un terminal, postship ouvre une interface plein écran — une fenêtre à elle, comme vim ou htop : ce qui était affiché avant revient intact en quittant.
Au premier lancement, trois questions : comment vous connecter — avec le navigateur de cet ordinateur (la page /cli/autoriser montre le code, vous autorisez), ou en collant une clé d'API créée dans Réglages de l'espace → API —, le projet à afficher en premier, et les notifications du bureau.
Ensuite, deux panneaux : vos projets à gauche — ceux qui ont un incident ouvert en tête — ; le projet choisi à droite, en cinq vues : Aperçu, Incidents, Déploiements, URLs, Sortie. L'Aperçu répond d'abord à « prêt à livrer ? », comme postship gate : un incident ouvert, un dernier ship en échec ou un score sous le seuil de ./.postship.json bloquent. Tout se fait au clavier :
| Touche | Ce qu'elle fait |
|---|---|
| ↑ ↓ | Choisir un projet |
| ← → ou 1 à 5 | Changer de vue |
| Tab | Choisir une ligne de la vue (incident, URL, déploiement) : c la vérifie seule, o l'ouvre |
f | Filtrer les projets par nom ou adresse |
c | Vérifier le projet (1 du quota) — le résultat s'affiche dans Sortie |
w | Attendre le prochain ship du projet |
o | Ouvrir la page dans le navigateur ; s la page de statut publique |
r | Relire maintenant |
d | En faire le projet par défaut ; n : notifications du bureau, oui ou non |
/ | Taper une commande complète — check example.com, wait --head, whoami, logout… — avec la liste et Tab pour compléter |
? | L'aide |
| Échap, Ctrl+C | Annuler ce qui tourne, revenir ; q ou Ctrl+C quitte |
L'interface relit vos projets toutes les 30 secondes : un incident qui s'ouvre ou se ferme, un ship qui vient d'être vérifié, passent dans la ligne du bas avec une sonnerie, et dans le fil « Pendant cette séance » de l'Aperçu. Les couleurs suivent le fond du terminal, clair ou sombre, quand il le dit ; sinon /theme clair ou /theme sombre. update, uninstall et init, tapés dans l'interface, la ferment puis s'exécutent dans le terminal.
Hors d'un terminal — un script, un tube, une CI —, postship sans commande affiche l'aide et sort en 2, comme avant.
Dans une CI
Pas de navigateur dans un runner : la clé vient d'un secret, dans POSTSHIP_TOKEN. Créez-la dans Réglages de l'espace → API (« Créer une clé », psk_…, affichée une fois). Elle ne passe jamais en argument — la flag --token n'existe pas, et tout jeton qui fuirait sur la sortie est masqué. Des workflows complets sont dans Recettes CI.
Ce que PostShip fait
Les commandes
Chaque commande a sa page — les options, des exemples, les codes de sortie, le dépannage — et postship help <commande> dit la même chose dans le terminal. postship docs <commande> ouvre la page.
| Commande | Ce qu'elle fait | Quota |
|---|---|---|
login | Connecte ce terminal au compte, depuis le navigateur. | non |
logout | Révoque la clé de cet appareil et l'oublie. | non |
status | Le tableau de bord d'un coup : vos projets, leurs incidents ouverts, le dernier ship. | non |
check | Vérifie une URL comme après un déploiement : tableau, score, quota. postship check example.com suffit. | 1 par URL |
projects | Vos projets, leur état, leur dernier passage. | non |
incidents | Ce qui est en panne, depuis quand. | non |
ship | Le dernier déploiement de production et son score. | non |
ships | Les derniers déploiements de production. | non |
urls | Les URLs surveillées du projet. | non |
wait | Attend que le dernier ship — ou le vôtre, --head ou --sha — soit conclu, puis rend son verdict. | non |
gate | Incidents ouverts + dernier ship : la prod est-elle sortable ? | non |
watch | Les incidents ouverts en direct, d'un projet ou de tous, avec une sonnerie à chaque changement. | non |
open | Ouvre le projet dans le navigateur — Aperçu, incidents, déploiements… | non |
whoami | Plan, quota du mois, clé. | non |
doctor | Node, réseau, PostShip joignable, clé acceptée. | non |
init | Écrit ./.postship.json (projet, seuil). | non |
update | Met la CLI à jour, avec le gestionnaire qui l'a installée. | non |
uninstall | Révoque la clé, efface la configuration, désinstalle la CLI. | non |
completion | La complétion pour bash, zsh, fish, PowerShell. | non |
docs | Ouvre cette documentation. | non |
Le projet se cherche dans l'ordre : --project, puis ./.postship.json, puis POSTSHIP_PROJECT. La clé : POSTSHIP_TOKEN d'abord, sinon celle de postship login. --json écrit la réponse brute, rien d'autre. L'aide et les erreurs sont en français si LANG commence par fr — ou, sans LANG (Windows), si le système est en français —, sinon en anglais ; les couleurs ne s'écrivent que sur un terminal (NO_COLOR et CI=true respectés). Une fois par jour, la CLI signale une version plus récente sur npm (POSTSHIP_NO_UPDATE_NOTICE=1 pour ne plus le voir ; jamais en CI ni avec --json).
Les codes de sortie
| Code | Signification |
|---|---|
| 0 | Le site (ou la lecture) est bon, le seuil est atteint |
| 1 | Le site a un problème : fail, score sous le seuil, incidents ouverts avec --fail-if-open |
| 2 | L'outil n'a pas pu se prononcer : clé, quota, réseau, usage, projet introuvable |
1 et 2 ne se confondent pas : un workflow qui bloque une fusion sur l'état du site ne doit pas bloquer sur une panne de PostShip.
Dans GitHub Actions
Sur GitHub Actions, check écrit une annotation ::error par vérification en échec : elles apparaissent sur la pull request, sans API GitHub. L'action composite fait la même chose sans rien installer :
- uses: titilyonnais/postship-check@v1
with:
url: ${{ steps.preview.outputs.url }}
token: ${{ secrets.POSTSHIP_TOKEN }}
min-score: 80Le jeton est une input de l'action, passée depuis un secret de dépôt : GitHub le masque dans les logs, et il ne se retrouve jamais dans la liste des processus du runner. La prod, ensuite, en 2 lectures qui ne consomment rien :
postship wait --sha "$GITHUB_SHA" --timeout 600
postship gate --min-score 80Limites et plans
| Découverte | Pro | Pro Plus | |
|---|---|---|---|
check par mois | 30 | 500 | 3000 |
Lectures (projects, incidents, ship, wait, gate…) | illimitées | illimitées | illimitées |
| Clés actives (app et CLI) | 10 | 10 | 10 |
Au-delà, check est refusé (429, exit 2) avec le compte exact — jamais un résultat dégradé.
Dépannage
« Aucune clé : postship login, ou posez POSTSHIP_TOKEN. »
Ni POSTSHIP_TOKEN dans l'environnement, ni clé de postship login. En local, postship login ; dans un workflow, env: POSTSHIP_TOKEN: ${{ secrets.POSTSHIP_TOKEN }} sur le step.
« Clé d'API invalide ou révoquée. Relancez postship login. »
La clé n'est plus acceptée : révoquée depuis Réglages de l'espace → API, ou expirée après 90 jours sans usage. postship login en donne une nouvelle ; dans une CI, créez une clé et remplacez le secret.
« Projet introuvable. »
La clé d'API n'a pas accès à ce projet, ou l'identifiant est faux — la réponse est la même dans les deux cas, exprès. postship projects liste ce que la clé voit.
watch refuse de démarrer
CI=true : une watch dans un workflow tourne pour rien. Utilisez incidents --fail-if-open ou gate.
Vérifier depuis votre CI
Vérifier une URL avant de fusionner ou après un build, avec un appel HTTP depuis GitHub Actions ou GitLab CI, et faire échouer l'étape sur le verdict ou le score.
Le Check GitHub arrive après le déploiement. L'API, elle, tourne quand vous le décidez : avant un merge, après un build, sur une preview. Même moteur, mêmes vérifications, même Ship Score. Rien à installer : un appel HTTP avec curl, et jq pour lire la réponse — les deux sont déjà sur les runners GitHub. Si vous préférez une commande, postship fait le même appel.
Le jeton
Réglages de l'espace → API → Créer une clé. Il n'est affiché qu'une fois : PostShip n'en garde que l'empreinte et ne peut pas vous le redonner. Perdu, on le révoque et on en frappe un autre. 10 clés actives au maximum.
Mettez-le dans un secret de votre CI (GitHub : Settings → Secrets and variables → Actions ; GitLab : Settings → CI/CD → Variables, masquée et protégée). Il passe par une variable d'environnement, jamais en argument d'une commande : les CI masquent les secrets dans les logs, mais un argument se retrouve dans la liste des processus du runner, où le masquage ne s'applique pas.
L'appel
export POSTSHIP_TOKEN=psk_…
curl -sS -X POST https://postship.fr/api/v1/check \
-H "Authorization: Bearer $POSTSHIP_TOKEN" \
-H "Content-Type: application/json" \
-d '{"url":"https://votre-site.fr"}'La réponse porte outcome (pass ou fail), score, reason, checks[] et quota — chaque champ est décrit dans la référence de la route. Faites échouer votre étape sur un outcome autre que pass, ou sur un score sous votre seuil.
Les codes de sortie, et pourquoi 1 n'est pas 2
Un site qui a un problème et un outil qui n'a pas pu se prononcer ne sont pas la même chose. Un workflow qui bloque une fusion sur l'état du site sans bloquer sur une panne de PostShip ne peut faire la différence que par le code de sortie : 1 dit « le site a un problème », 2 dit « la vérification n'a pas eu lieu » — jeton refusé, quota atteint, PostShip injoignable. Le script ci-dessous fait cette distinction et applique un score plancher.
set -u
MIN_SCORE="${MIN_SCORE:-80}"
response=$(curl -sS -w '\n%{http_code}' -X POST https://postship.fr/api/v1/check \
-H "Authorization: Bearer $POSTSHIP_TOKEN" \
-H "Content-Type: application/json" \
-d "{\"url\":\"$URL\"}") || exit 2
status=$(printf '%s' "$response" | tail -n1)
body=$(printf '%s' "$response" | sed '$d')
echo "$body"
if [ "$status" != "200" ]; then
echo "PostShip n'a pas pu vérifier ($status) : $(echo "$body" | jq -r .error)"
exit 2
fi
outcome=$(echo "$body" | jq -r .outcome)
score=$(echo "$body" | jq -r .score)
if [ "$outcome" != "pass" ]; then
echo "$body" | jq -r '.checks[] | select(.outcome != "pass") | "\(.label) : \(.detail)"'
exit 1
fi
if [ "$score" -lt "$MIN_SCORE" ]; then
echo "Ship Score $score sous le seuil $MIN_SCORE ($(echo "$body" | jq -r .reason))"
exit 1
fi| Code de sortie | Signification |
|---|---|
| 0 | Tout est passé, et le seuil est atteint |
| 1 | Une vérification a échoué, ou le score est sous le seuil |
| 2 | Jeton refusé (401), quota atteint (429), URL refusée (400), ou PostShip injoignable |
Sur GitHub Actions, un code autre que 0 fait échouer l'étape dans les deux cas ; ajoutez continue-on-error: true sur l'étape et testez steps.<id>.outcome si vous voulez laisser passer un code 2. Le seuil se règle par la variable MIN_SCORE — c'est le même chiffre que le score plancher du Check GitHub, appliqué ici avant la fusion plutôt qu'après le déploiement.
Quota
Les vérifications de CI sont comptées par mois et par espace : 30 en Découverte, 500 en Pro, 3000 en Pro Plus. Au-delà, l'appel est refusé (429) avec le compte exact — jamais un résultat dégradé : une CI qui ment est pire qu'une CI qui casse. Le compteur du mois est affiché dans Réglages de l'espace → API. Voir les plans.
Dépannage
Pourquoi l'étape échoue-t-elle avec « Jeton d'API invalide ou révoqué » ?
Le secret n'est pas exposé à ce job (sur GitHub, un workflow déclenché par une pull request d'un fork n'a pas accès aux secrets), ou le jeton a été révoqué. Vérifiez la date de dernière utilisation de la clé dans Réglages de l'espace → API.
Pourquoi vérifier l'URL de preview plutôt que la production ?
Parce que c'est avant la fusion que le verdict est utile. L'événement deployment_status de GitHub porte l'URL de la preview dans target_url ; sur Vercel, Netlify ou Cloudflare Pages, PostShip peut aussi vérifier les previews sans passer par votre CI.
Pourquoi le score de la CI diffère-t-il de celui de mon projet ?
La CI vérifie une URL nue, sans les assertions des pages de paiement ni les contrôles du site. Le projet, lui, note tout ce qu'il surveille.
Recettes CI
Des workflows complets à copier — GitHub Actions sur une preview et sur la prod, GitLab CI avec JUnit, Vercel puis wait, le script du lundi matin.
4 situations, 4 fichiers prêts. Partout, la clé vient d'un secret (POSTSHIP_TOKEN) et l'identifiant du projet d'un ./.postship.json commité (postship init) ou d'une variable POSTSHIP_PROJECT. Jamais de clé en clair, jamais en argument.
GitHub Actions : la preview d'une pull request
Vérifier l'URL de preview avant la fusion, avec un seuil, et voir les échecs annotés sur la pull request. check compte une vérification dans le quota.
name: PostShip
on: [pull_request]
jobs:
preview:
runs-on: ubuntu-latest
steps:
- uses: titilyonnais/postship-check@v1
with:
url: ${{ steps.preview.outputs.url }}
token: ${{ secrets.POSTSHIP_TOKEN }}
min-score: 80steps.preview.outputs.url est l'adresse que votre étape de déploiement de preview a produite (Vercel, Netlify…). Sans action dédiée, la même chose en 2 lignes :
- run: npm i -g postship
- run: postship check --url "${{ steps.preview.outputs.url }}" --min-score 80
env:
POSTSHIP_TOKEN: ${{ secrets.POSTSHIP_TOKEN }}GitHub Actions : la prod, après un déploiement
Attendre que PostShip ait vérifié ce commit en production, puis décider. Rien n'est consommé : wait et gate sont des lectures.
production:
runs-on: ubuntu-latest
needs: deploy
steps:
- uses: actions/checkout@v4
- run: npm i -g postship
- run: postship wait --sha "$GITHUB_SHA" --timeout 600
env:
POSTSHIP_TOKEN: ${{ secrets.POSTSHIP_TOKEN }}
- run: postship gate --min-score 80
env:
POSTSHIP_TOKEN: ${{ secrets.POSTSHIP_TOKEN }}Le projet vient de ./.postship.json (commité). wait sort en 2 si 10 minutes passent sans ship conclu — la job échoue, mais pas parce que le site est cassé : steps.<id>.outcome distingue les deux si vous voulez laisser passer un 2.
GitLab CI : le rapport JUnit
--junit écrit un rapport que l'onglet Tests de GitLab affiche, une ligne par vérification.
postship:
image: node:20
script:
- npm i -g postship
- postship check --url "$CI_ENVIRONMENT_URL" --min-score 80 --junit postship.xml
artifacts:
when: always
reports:
junit: postship.xmlPOSTSHIP_TOKEN est une variable CI/CD masquée et protégée (Settings → CI/CD → Variables).
Vercel en ligne de commande, puis wait
Un déploiement lancé à la main, et la certitude qu'il a été vérifié avant de fermer le terminal.
vercel deploy --prod
postship wait --head --timeout 600 && postship openpostship open ouvre l'Aperçu du projet dans le navigateur.
Le script du lundi matin
Un coup d'œil sur tous les sites, sans ouvrir l'app — et un code 1 qui peut faire sonner autre chose.
#!/usr/bin/env bash
set -euo pipefail
postship projects --fail-if-red
for id in $(postship projects --json | jq -r '.projects[].id'); do
postship incidents -p "$id" --fail-if-open
doneVoir aussi
La commande postship — toutes les commandes · postship check · postship wait · postship gate · Vérifier depuis votre CI — la même chose avec curl, sans rien installer.
postship login
Connecte la CLI à votre compte, depuis le navigateur.
Affiche un code de 8 caractères et ouvre postship.fr/cli/autoriser. Vous vous connectez (ou vous l'êtes déjà), vous comparez le code à celui du terminal, vous autorisez. La CLI reçoit une clé d'API à votre nom — « CLI · <machine> », visible et révocable dans Réglages de l'espace → API, qui expire après 90 jours sans usage — et l'écrit dans ~/.config/postship/config.json (mode 0600). 10 minutes pour tout faire ; le code ne sert qu'une fois. Dans l'interface (postship tapé seul), deux façons de se connecter : le navigateur, ou une clé d'API collée.
Cette commande ne consomme pas le quota : c'est une lecture.
Ce que PostShip fait
Usage
postship login [--machine <nom>] [--no-browser]Options
| Option | Ce qu'elle fait |
|---|---|
--machine <nom> | Le nom de cet appareil dans Réglages de l'espace → API (par défaut : le nom de la machine). |
--no-browser | N'ouvre pas le navigateur : affiche seulement l'adresse et le code, pour une machine distante. |
Exemples
postship loginSur votre poste : le navigateur s'ouvre, vous autorisez, c'est fini.
postship login --no-browser --machine "serveur de build"Sur un serveur en SSH : copiez l'adresse dans un navigateur ailleurs.
Codes de sortie
0 clé reçue et écrite · 2 refusé, expiré (10 minutes), ou PostShip injoignable.
Dépannage
« Ce code n'est plus valable » dans le navigateur
10 minutes se sont écoulées, ou le code a déjà servi. Relancez postship login.
La CLI attend sans fin
Vous n'avez pas cliqué « Autoriser ce terminal », ou l'avez fait sur un autre compte que celui ouvert dans le navigateur. Le terminal montre le code : comparez.
Voir aussi
La commande postship — toutes les commandes, l'installation et la connexion · Recettes CI — des workflows complets à copier.
Dans le terminal, postship help login dit la même chose ; postship docs login ouvre cette page.
postship logout
Révoque la clé de cet appareil et efface la configuration.
La clé qui parle est révoquée côté PostShip (elle disparaît de Réglages de l'espace → API), puis retirée de ~/.config/postship/config.json. Une clé posée dans POSTSHIP_TOKEN n'est pas touchée : ce n'est pas la CLI qui l'a mise là.
Cette commande ne consomme pas le quota : c'est une lecture.
Ce que PostShip fait
Usage
postship logoutOptions
Aucune option.
Exemples
postship logoutAvant de rendre un poste prêté.
Codes de sortie
0 déconnecté · 2 aucune clé, ou PostShip injoignable (la config locale est effacée quand même).
Voir aussi
La commande postship — toutes les commandes, l'installation et la connexion · Recettes CI — des workflows complets à copier.
Dans le terminal, postship help logout dit la même chose ; postship docs logout ouvre cette page.
postship status
Le compte, les projets, les incidents ouverts et le dernier ship en un écran.
Le tableau de bord, d'un coup, puis la main rend au shell — tapé seul, postship ouvre l'interface plein écran, qui suit la même chose en direct. Qui parle (plan, quota, clé), chaque projet avec son état et le nombre d'incidents ouverts, et pour le projet courant — celui de ./.postship.json ou de --project — les incidents ouverts et le dernier déploiement de production.
Cette commande ne consomme pas le quota : c'est une lecture.
Ce que PostShip fait
Usage
postship status [--project <id>] [--json]Options
| Option | Ce qu'elle fait |
|---|---|
--project, -p <id> | Le projet à détailler. |
--json | Tout, brut. |
Exemples
postship status -p 3f1c…Un projet en détail : incidents ouverts et dernier ship.
postship status --json | jq '.projects[] | select(.openIncidents > 0) | .name'Les projets qui ont un incident ouvert.
Codes de sortie
0 · 1 un incident ouvert ou un ship en échec sur le projet courant · 2 jeton, réseau.
Voir aussi
La commande postship — toutes les commandes, l'installation et la connexion · Recettes CI — des workflows complets à copier.
Dans le terminal, postship help status dit la même chose ; postship docs status ouvre cette page.
postship check
Vérifie une URL (ou l'URL de production d'un projet). Compte dans le quota.
Le cœur : la même vérification que PostShip fait après un déploiement (l'adresse peut se taper seule, sans --url ni https:// — postship check exemple.fr) — HTTP et ressources, indexabilité, carte sociale, sitemap, certificat, visibilité IA — avec le même Ship Score. Une URL, plusieurs, ou l'URL de production d'un projet. Sort en 1 si une vérification échoue ou si le score est sous le seuil : c'est ce qui bloque une fusion.
Cette commande compte dans le quota de vérifications du mois (une par URL). Les autres commandes sont des lectures, illimitées.
Ce que PostShip fait
Usage
postship check [<url>] [--url <https://…>] [--url …] [--project <id>] [--min-score <n>] [--json] [--quiet] [--junit <fichier>] [--github-annotations]Options
| Option | Ce qu'elle fait |
|---|---|
--url <https://…> | L'adresse à vérifier, publique, en https. Répétable : chaque URL compte 1 dans le quota. |
--project <id> | À la place de --url : lit l'URL de production du projet (un appel GET /projects, gratuit) puis la vérifie. |
--min-score <n> | Sort en 1 si le Ship Score est sous ce seuil, même si tout est passé. Lu aussi dans ./.postship.json. |
--json | La réponse brute du serveur sur la sortie standard, rien d'autre — pour jq ou un script. |
--quiet | Rien sur la sortie standard quand tout passe ; les échecs sur la sortie d'erreur. |
--junit <fichier> | Écrit un rapport JUnit (un cas par vérification), pour l'onglet Tests de GitLab. |
--github-annotations | Une annotation ::error par échec, sur la pull request. Automatique quand GITHUB_ACTIONS=true ; --github-annotations false pour l'éteindre. |
Exemples
postship check example.comLe plus court : une adresse, un verdict.
postship check --url https://preview-abc.vercel.app --min-score 80La preview d'une pull request, avec un seuil.
postship check --project 3f1c… --json | jq .scoreLa production du projet, le score seul.
postship check --url https://a.fr --url https://b.fr --quiet2 sites d'un coup, silencieux si tout va bien.
Codes de sortie
0 tout est passé et le seuil est atteint · 1 une vérification a échoué ou le score est sous le seuil · 2 jeton, quota (429), URL refusée (400), ou PostShip injoignable.
Dépannage
« Quota mensuel atteint »
Le compteur du mois est plein pour votre plan (30, 500 ou 3000). Il repart au premier du mois ; les lectures (projects, incidents, ship, wait, gate) restent illimitées.
Le score est bon mais le code est 1
Une vérification a échoué : le tableau la marque fail. Le score et le verdict sont 2 choses.
Voir aussi
La commande postship — toutes les commandes, l'installation et la connexion · Recettes CI — des workflows complets à copier.
Dans le terminal, postship help check dit la même chose ; postship docs check ouvre cette page.
postship projects
Liste vos projets et leur état.
Ce que votre clé a le droit de voir : les projets que vous possédez, et ceux où vous êtes membre accepté. Une ligne par projet — identifiant court, nom, URL, verdict du dernier passage, quand.
Cette commande ne consomme pas le quota : c'est une lecture.
Ce que PostShip fait
Usage
postship projects [--json] [--fail-if-red]Options
| Option | Ce qu'elle fait |
|---|---|
--json | La liste brute. |
--fail-if-red | Sort en 1 si au moins un projet est en échec — pour un script de garde. |
Exemples
postship projectsLe tableau.
postship projects --json | jq -r '.projects[].id'Les identifiants, pour les autres commandes.
Codes de sortie
0 · 1 avec --fail-if-red si un projet est rouge · 2 jeton refusé ou PostShip injoignable.
Dépannage
« Aucun projet. »
La clé appartient à un compte sans projet, ou vous n'êtes membre d'aucun. Vérifiez avec postship whoami.
Voir aussi
La commande postship — toutes les commandes, l'installation et la connexion · Recettes CI — des workflows complets à copier.
Dans le terminal, postship help projects dit la même chose ; postship docs projects ouvre cette page.
postship incidents
Ce qui est en panne sur un projet, et depuis quand.
Les URLs du projet dont le dernier verdict est mauvais — les incidents au sens de l'application, le fait brut, pas ce que la page de statut raconte. Une ligne par URL : adresse, type de vérification, verdict, depuis quand.
Cette commande ne consomme pas le quota : c'est une lecture.
Ce que PostShip fait
Usage
postship incidents --project <id> [--fail-if-open] [--json]Options
| Option | Ce qu'elle fait |
|---|---|
--project, -p <id> | Le projet. Ou ./.postship.json, ou POSTSHIP_PROJECT. |
--fail-if-open | Sort en 1 s'il y a au moins un incident ouvert. |
--json | La liste brute. |
Exemples
postship incidents -p 3f1c…« Rien d'ouvert. » ou le tableau.
postship incidents --fail-if-openDans un dépôt avec ./.postship.json : bloque si quelque chose est en panne.
Codes de sortie
0 · 1 avec --fail-if-open si un incident est ouvert · 2 projet introuvable, jeton, réseau.
Dépannage
« Projet introuvable. »
La clé d'API n'a pas accès à ce projet, ou l'identifiant est faux — la réponse est la même dans les deux cas, exprès.
Voir aussi
La commande postship — toutes les commandes, l'installation et la connexion · Recettes CI — des workflows complets à copier.
Dans le terminal, postship help incidents dit la même chose ; postship docs incidents ouvre cette page.
postship ship
Le dernier déploiement de production et son score.
Le dernier déploiement de production suivi — pas une preview — avec son origine (vercel, netlify, cloudflare, generic, empreinte), le commit, la date, le verdict et le Ship Score.
Cette commande ne consomme pas le quota : c'est une lecture.
Ce que PostShip fait
Usage
postship ship --project <id> [--require] [--min-score <n>] [--json]Options
| Option | Ce qu'elle fait |
|---|---|
--project, -p <id> | Le projet. |
--require | Sort en 2 s'il n'y a aucun déploiement suivi — une CI qui refuse de fusionner sans preuve de ship. |
--min-score <n> | Sort en 1 si le score du ship est sous ce seuil. |
--json | La réponse brute. |
Exemples
postship ship -p 3f1c…Une ligne : origine, commit, date, verdict, score.
postship ship -p 3f1c… --require --min-score 80Dans un workflow : la prod doit avoir un ship, et il doit être bon.
Codes de sortie
0 · 1 ship en échec ou score sous le seuil · 2 aucun ship avec --require, projet introuvable, jeton, réseau.
Dépannage
« Aucun déploiement de production suivi. »
Aucun hébergeur n'est branché sur ce projet, ou aucune mise en ligne n'a encore été vue. Projet → Paramètres → Intégrations.
Voir aussi
La commande postship — toutes les commandes, l'installation et la connexion · Recettes CI — des workflows complets à copier.
Dans le terminal, postship help ship dit la même chose ; postship docs ship ouvre cette page.
postship ships
Les derniers déploiements de production.
L'historique de production, les plus récents d'abord, pour l'humain : 20 par défaut, 100 au plus. Les previews n'y sont pas.
Cette commande ne consomme pas le quota : c'est une lecture.
Ce que PostShip fait
Usage
postship ships --project <id> [--limit <n>] [--json]Options
| Option | Ce qu'elle fait |
|---|---|
--project, -p <id> | Le projet. |
--limit <n> | Combien (20 par défaut, 100 au plus). |
--json | La liste brute. |
Exemples
postship ships -p 3f1c… --limit 5Les 5 derniers.
Codes de sortie
0 · 2 projet introuvable, jeton, réseau.
Voir aussi
La commande postship — toutes les commandes, l'installation et la connexion · Recettes CI — des workflows complets à copier.
Dans le terminal, postship help ships dit la même chose ; postship docs ships ouvre cette page.
postship urls
Les URLs surveillées d'un projet.
Le détail du projet : ses URLs et contrôles (type, actif ou non, dernier verdict, dernier passage), sa page de statut, s'il est en pause.
Cette commande ne consomme pas le quota : c'est une lecture.
Ce que PostShip fait
Usage
postship urls --project <id> [--json]Options
| Option | Ce qu'elle fait |
|---|---|
--project, -p <id> | Le projet. |
--json | Le détail brut. |
Exemples
postship urls -p 3f1c…Le tableau des cibles.
Codes de sortie
0 · 2 projet introuvable, jeton, réseau.
Voir aussi
La commande postship — toutes les commandes, l'installation et la connexion · Recettes CI — des workflows complets à copier.
Dans le terminal, postship help urls dit la même chose ; postship docs urls ouvre cette page.
postship wait
Attend que le dernier ship soit conclu (ou porte un commit), puis rend son verdict.
Toutes les 15 secondes, lit le dernier ship de production. Dès qu'il est conclu — verdict posé, score posé — la commande rend ce verdict. Avec --sha, elle attend le ship de ce commit et pas un ship d'hier ; --head prend le commit du dépôt git courant — git push && postship wait --head. Dans un terminal, une roue montre l'attente et le terminal sonne à la fin. Lecture seulement : rien n'est consommé.
Cette commande ne consomme pas le quota : c'est une lecture.
Ce que PostShip fait
Usage
postship wait --project <id> [--head | --sha <abcdef>] [--timeout <s>] [--min-score <n>] [--notify] [--json]Options
| Option | Ce qu'elle fait |
|---|---|
--project, -p <id> | Le projet. |
--head | Attend le commit courant du dépôt (git rev-parse HEAD) : celui qu'on vient de pousser. |
--sha <abcdef> | Le début du commit attendu ($GITHUB_SHA). --sha HEAD vaut --head. |
--timeout <s> | Combien de secondes attendre au plus (600). |
--min-score <n> | Sort en 1 si le score du ship est sous ce seuil. |
--notify | Une notification du bureau quand le ship est conclu (macOS, Windows, Linux avec notify-send). |
--json | La réponse brute du ship conclu. |
Exemples
git push && postship wait --head --notifyAu quotidien : poussez, passez à autre chose, la notification dit si la prod est bonne.
postship wait -p 3f1c… --sha "$GITHUB_SHA" --timeout 600Après vercel deploy, dans la même job.
postship wait --min-score 80Avec ./.postship.json.
Codes de sortie
0 ship conclu et bon · 1 ship en échec ou score sous le seuil · 2 délai écoulé (on n'a pas pu conclure), projet introuvable, jeton, réseau.
Dépannage
Délai écoulé alors que le déploiement est en ligne
PostShip n'a pas vu ce déploiement : l'hébergeur n'est pas branché, ou le commit ne correspond pas (--sha). Projet → Déploiements montre ce qui a été vu.
« --head : pas de dépôt git ici »
La commande est lancée hors d'un dépôt, ou git n'est pas installé. Lancez-la depuis le dossier du projet, ou passez --sha.
Voir aussi
La commande postship — toutes les commandes, l'installation et la connexion · Recettes CI — des workflows complets à copier.
Dans le terminal, postship help wait dit la même chose ; postship docs wait ouvre cette page.
postship gate
Incidents ouverts + dernier ship : la prod est-elle sortable ? Sans quota.
Une ligne dans le workflow qui répond « est-ce que la prod actuelle est sortable ? » : sort en 1 s'il y a un incident ouvert, en 2 s'il n'y a aucun ship suivi, sinon le verdict du dernier ship (avec le seuil). C'est incidents --fail-if-open et ship --require --min-score en un appel, sans brûler de quota.
Cette commande ne consomme pas le quota : c'est une lecture.
Ce que PostShip fait
Usage
postship gate --project <id> [--min-score <n>] [--json]Options
| Option | Ce qu'elle fait |
|---|---|
--project, -p <id> | Le projet. |
--min-score <n> | Le seuil du ship. |
--json | Incidents et ship, bruts. |
Exemples
postship gate -p 3f1c… --min-score 80Avant de fusionner sur main.
Codes de sortie
0 rien d'ouvert, ship bon · 1 incident ouvert, ship en échec ou sous le seuil · 2 aucun ship, projet introuvable, jeton, réseau.
Voir aussi
La commande postship — toutes les commandes, l'installation et la connexion · Recettes CI — des workflows complets à copier.
Dans le terminal, postship help gate dit la même chose ; postship docs gate ouvre cette page.
postship watch
Les incidents ouverts en direct, avec une sonnerie à chaque changement. Terminal seulement.
Le tableau des incidents ouverts, redessiné toutes les 30 secondes jusqu'à Ctrl+C — d'un projet, ou de tous vos projets actifs quand aucun n'est choisi. Quand un incident s'ouvre ou se ferme, le terminal sonne et la ligne s'ajoute au fil de la séance, sous le tableau ; --notify envoie aussi une notification du bureau. De quoi la laisser ouverte dans un onglet. Refusé quand CI=true : une watch dans un workflow tourne pour rien — utilisez incidents --fail-if-open ou gate.
Cette commande ne consomme pas le quota : c'est une lecture.
Ce que PostShip fait
Usage
postship watch [--project <id>] [--interval <s>] [--notify]Options
| Option | Ce qu'elle fait |
|---|---|
--project, -p <id> | Un seul projet (sinon : tous les projets actifs, 20 au plus). |
--interval <s> | Toutes les combien de secondes relire (30 par défaut, 15 au moins). |
--notify | Une notification du bureau à chaque incident ouvert ou résolu. |
Exemples
postship watch --notifyTous les projets, toute la journée, dans un onglet.
postship watch -p 3f1c… --interval 15Pendant une mise en ligne délicate.
Codes de sortie
0 à Ctrl+C · 2 CI=true, pas de terminal, projet introuvable, jeton, réseau (au premier relevé ; ensuite, une coupure s'affiche sans quitter).
Dépannage
Aucune notification du bureau
Sur Linux, installez notify-send (libnotify) ; sur Windows et macOS, vérifiez que les notifications du terminal ne sont pas coupées. La sonnerie du terminal, elle, part toujours.
Voir aussi
La commande postship — toutes les commandes, l'installation et la connexion · Recettes CI — des workflows complets à copier.
Dans le terminal, postship help watch dit la même chose ; postship docs watch ouvre cette page.
postship open
Ouvre le projet dans le navigateur.
L'Aperçu du projet courant dans le navigateur — ou une page nommée : incidents, deploys, urls, performance, reglages. Sans projet, l'app.
Cette commande ne consomme pas le quota : c'est une lecture.
Ce que PostShip fait
Usage
postship open [--project <id>] [apercu|incidents|deploys|urls|performance|reglages]Options
| Option | Ce qu'elle fait |
|---|---|
--project, -p <id> | Le projet. |
Pages de postship open : apercu, incidents, deploys, urls, performance, reglages.
Exemples
postship openL'Aperçu.
postship open incidents -p 3f1c…Les incidents de ce projet.
Codes de sortie
0 · 2 projet introuvable, ou pas de navigateur à lancer (l'adresse est affichée).
Dépannage
En SSH, ou dans un script, je veux juste l'adresse.
POSTSHIP_NO_BROWSER=1 : l'adresse est écrite, rien n'est lancé, code 0. La même variable vaut pour login (le lien est affiché) et docs.
Voir aussi
La commande postship — toutes les commandes, l'installation et la connexion · Recettes CI — des workflows complets à copier.
Dans le terminal, postship help open dit la même chose ; postship docs open ouvre cette page.
postship whoami
Le plan, le quota et la clé en cours.
Qui parle : le plan du compte, le quota de vérifications du mois (utilisé, limite, restant), et la clé — son préfixe, son nom, son dernier usage. Rien du compte lui-même.
Cette commande ne consomme pas le quota : c'est une lecture.
Ce que PostShip fait
Usage
postship whoami [--json]Options
| Option | Ce qu'elle fait |
|---|---|
--json | Brut. |
Exemples
postship whoami« plan pro · quota 12/500 · jeton psk_ab12cd… »
Codes de sortie
0 · 2 jeton refusé ou réseau.
Voir aussi
La commande postship — toutes les commandes, l'installation et la connexion · Recettes CI — des workflows complets à copier.
Dans le terminal, postship help whoami dit la même chose ; postship docs whoami ouvre cette page.
postship doctor
Node, réseau, PostShip joignable, clé acceptée.
4 lignes : la version de Node (18 au moins), fetch, PostShip joignable (un 401 sans clé est bon signe), et si une clé est posée, si elle est acceptée et combien de projets elle lit. N'appelle jamais /check.
Cette commande ne consomme pas le quota : c'est une lecture.
Ce que PostShip fait
Usage
postship doctorOptions
Aucune option.
Exemples
postship doctorAvant d'ouvrir un ticket.
Codes de sortie
0 tout va · 2 quelque chose ne va pas (dit lequel).
Voir aussi
La commande postship — toutes les commandes, l'installation et la connexion · Recettes CI — des workflows complets à copier.
Dans le terminal, postship help doctor dit la même chose ; postship docs doctor ouvre cette page.
postship init
Écrit ./.postship.json : le projet et le seuil. Jamais la clé.
Dans un terminal, liste vos projets et vous laisse choisir au clavier ; sinon prend --project. Écrit ./.postship.json — commitable — avec le projet et le seuil (80 par défaut). La clé, elle, reste dans POSTSHIP_TOKEN ou ~/.config/postship : jamais dans un fichier versionné.
Cette commande ne consomme pas le quota : c'est une lecture.
Ce que PostShip fait
Usage
postship init [--project <id>] [--min-score <n>]Options
| Option | Ce qu'elle fait |
|---|---|
--project <id> | Le projet, sans passer par la liste. |
--min-score <n> | Le seuil à écrire (80). |
Exemples
postship initChoisir dans la liste, flèches et Entrée.
postship init --project 3f1c… --min-score 90Sans question, pour un script.
Codes de sortie
0 fichier écrit · 2 pas de terminal et pas de --project, identifiant invalide, jeton, réseau.
Voir aussi
La commande postship — toutes les commandes, l'installation et la connexion · Recettes CI — des workflows complets à copier.
Dans le terminal, postship help init dit la même chose ; postship docs init ouvre cette page.
postship update
Met la CLI à jour, avec le gestionnaire qui l'a installée.
Lit la dernière version publiée sur npm et, si elle est plus récente, la réinstalle avec le gestionnaire qui a installé la CLI — npm i -g postship@latest, ou son équivalent pnpm, yarn ou bun. La connexion est gardée : la clé reste dans ~/.config/postship. Une CLI lancée par npx, depuis la source ou dans l'action GitHub n'est pas touchée : la commande dit quoi faire. Depuis l'interface (/update), elle se ferme, la mise à jour se fait, puis on relance postship.
Cette commande ne consomme pas le quota : c'est une lecture.
Ce que PostShip fait
Usage
postship update [--check]Options
| Option | Ce qu'elle fait |
|---|---|
--check | Dit seulement si une version plus récente existe, sans rien installer. |
Exemples
postship updateLa dernière version, en une commande.
postship update --checkSavoir s'il y a du nouveau, sans rien changer.
Codes de sortie
0 à jour, ou mise à jour faite · 2 registre npm injoignable, CLI hors installation globale, ou échec du gestionnaire (droits).
Dépannage
« La mise à jour a échoué » avec EACCES
Sur macOS ou Linux, le dossier global de npm appartient souvent à root : sudo npm i -g postship@latest, ou un gestionnaire de versions de Node (nvm, fnm) qui installe dans votre dossier.
Voir aussi
La commande postship — toutes les commandes, l'installation et la connexion · Recettes CI — des workflows complets à copier.
Dans le terminal, postship help update dit la même chose ; postship docs update ouvre cette page.
postship uninstall
Révoque la clé, efface la configuration et désinstalle la CLI.
Trois gestes, dans l'ordre : la clé de ce terminal est révoquée chez PostShip (comme postship logout), ~/.config/postship est effacé (clé, réglages et historique de l'interface, cache de version), puis le paquet est retiré avec le gestionnaire qui l'a installé. Une confirmation est demandée dans un terminal ; --yes pour un script. Les fichiers ./.postship.json de vos dépôts et une clé posée dans POSTSHIP_TOKEN ne sont pas touchés.
Cette commande ne consomme pas le quota : c'est une lecture.
Ce que PostShip fait
Usage
postship uninstall [--yes]Options
| Option | Ce qu'elle fait |
|---|---|
--yes | Sans confirmation (obligatoire hors d'un terminal). |
Exemples
postship uninstallTout retirer, proprement.
postship uninstall --yesDans un script de nettoyage de poste.
Codes de sortie
0 désinstallé (ou renoncé à la confirmation) · 2 hors terminal sans --yes, ou échec du gestionnaire.
Dépannage
« Le fichier de commandes est introuvable » dans cmd.exe
Sans conséquence : cmd.exe relit le raccourci postship.cmd qui vient d'être supprimé. PowerShell et Windows Terminal ne l'affichent pas.
Voir aussi
La commande postship — toutes les commandes, l'installation et la connexion · Recettes CI — des workflows complets à copier.
Dans le terminal, postship help uninstall dit la même chose ; postship docs uninstall ouvre cette page.
postship completion
L'autocomplétion des commandes et options pour votre shell.
Écrit le script de complétion sur la sortie standard ; à charger dans votre profil. Les commandes, leurs options, et les pages de postship open.
Cette commande ne consomme pas le quota : c'est une lecture.
Ce que PostShip fait
Usage
postship completion bash|zsh|fish|powershellOptions
Aucune option.
Exemples
postship completion zsh >> ~/.zshrczsh.
postship completion bash >> ~/.bashrcbash.
postship completion fish > ~/.config/fish/completions/postship.fishfish.
postship completion powershell >> $PROFILEPowerShell.
Codes de sortie
0 · 2 shell inconnu.
Voir aussi
La commande postship — toutes les commandes, l'installation et la connexion · Recettes CI — des workflows complets à copier.
Dans le terminal, postship help completion dit la même chose ; postship docs completion ouvre cette page.
postship docs
Ouvre la documentation d'une commande sur postship.fr.
postship.fr/docs/cli, ou la page de la commande donnée, dans le navigateur. Sans navigateur, l'adresse est affichée.
Cette commande ne consomme pas le quota : c'est une lecture.
Ce que PostShip fait
Usage
postship docs [commande]Options
Aucune option.
Exemples
postship docs waitLa page de wait.
Codes de sortie
0 · 2 commande inconnue.
Voir aussi
La commande postship — toutes les commandes, l'installation et la connexion · Recettes CI — des workflows complets à copier.
Dans le terminal, postship help docs dit la même chose ; postship docs docs ouvre cette page.