Aller au contenu

Pour commencer

Les plus lues

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

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 login

login 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
postship

init 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 verdict

wait --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 :

ToucheCe qu'elle fait
↑ ↓Choisir un projet
← → ou 1 à 5Changer de vue
TabChoisir une ligne de la vue (incident, URL, déploiement) : c la vérifie seule, o l'ouvre
fFiltrer les projets par nom ou adresse
cVérifier le projet (1 du quota) — le résultat s'affiche dans Sortie
wAttendre le prochain ship du projet
oOuvrir la page dans le navigateur ; s la page de statut publique
rRelire maintenant
dEn 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+CAnnuler 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.

CommandeCe qu'elle faitQuota
loginConnecte ce terminal au compte, depuis le navigateur.non
logoutRévoque la clé de cet appareil et l'oublie.non
statusLe tableau de bord d'un coup : vos projets, leurs incidents ouverts, le dernier ship.non
checkVérifie une URL comme après un déploiement : tableau, score, quota. postship check example.com suffit.1 par URL
projectsVos projets, leur état, leur dernier passage.non
incidentsCe qui est en panne, depuis quand.non
shipLe dernier déploiement de production et son score.non
shipsLes derniers déploiements de production.non
urlsLes URLs surveillées du projet.non
waitAttend que le dernier ship — ou le vôtre, --head ou --sha — soit conclu, puis rend son verdict.non
gateIncidents ouverts + dernier ship : la prod est-elle sortable ?non
watchLes incidents ouverts en direct, d'un projet ou de tous, avec une sonnerie à chaque changement.non
openOuvre le projet dans le navigateur — Aperçu, incidents, déploiements…non
whoamiPlan, quota du mois, clé.non
doctorNode, réseau, PostShip joignable, clé acceptée.non
initÉcrit ./.postship.json (projet, seuil).non
updateMet la CLI à jour, avec le gestionnaire qui l'a installée.non
uninstallRévoque la clé, efface la configuration, désinstalle la CLI.non
completionLa complétion pour bash, zsh, fish, PowerShell.non
docsOuvre 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

CodeSignification
0Le site (ou la lecture) est bon, le seuil est atteint
1Le site a un problème : fail, score sous le seuil, incidents ouverts avec --fail-if-open
2L'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: 80

Le 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 80

Limites et plans

DécouverteProPro Plus
check par mois305003000
Lectures (projects, incidents, ship, wait, gate…)illimitéesillimitéesillimitées
Clés actives (app et CLI)101010

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

Depuis un terminal
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.

Un verdict, un seuil, deux codes de sortie
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 sortieSignification
0Tout est passé, et le seuil est atteint
1Une vérification a échoué, ou le score est sous le seuil
2Jeton 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: 80

steps.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.xml

POSTSHIP_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 open

postship 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
done

Voir 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

OptionCe 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-browserN'ouvre pas le navigateur : affiche seulement l'adresse et le code, pour une machine distante.

Exemples

postship login

Sur 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 logout

Options

Aucune option.

Exemples

postship logout

Avant 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

OptionCe qu'elle fait
--project, -p <id>Le projet à détailler.
--jsonTout, 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

OptionCe 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.
--jsonLa réponse brute du serveur sur la sortie standard, rien d'autre — pour jq ou un script.
--quietRien 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-annotationsUne annotation ::error par échec, sur la pull request. Automatique quand GITHUB_ACTIONS=true ; --github-annotations false pour l'éteindre.

Exemples

postship check example.com

Le plus court : une adresse, un verdict.

postship check --url https://preview-abc.vercel.app --min-score 80

La preview d'une pull request, avec un seuil.

postship check --project 3f1c… --json | jq .score

La production du projet, le score seul.

postship check --url https://a.fr --url https://b.fr --quiet

2 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

OptionCe qu'elle fait
--jsonLa liste brute.
--fail-if-redSort en 1 si au moins un projet est en échec — pour un script de garde.

Exemples

postship projects

Le 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

OptionCe qu'elle fait
--project, -p <id>Le projet. Ou ./.postship.json, ou POSTSHIP_PROJECT.
--fail-if-openSort en 1 s'il y a au moins un incident ouvert.
--jsonLa liste brute.

Exemples

postship incidents -p 3f1c…

« Rien d'ouvert. » ou le tableau.

postship incidents --fail-if-open

Dans 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

OptionCe qu'elle fait
--project, -p <id>Le projet.
--requireSort 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.
--jsonLa réponse brute.

Exemples

postship ship -p 3f1c…

Une ligne : origine, commit, date, verdict, score.

postship ship -p 3f1c… --require --min-score 80

Dans 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

OptionCe qu'elle fait
--project, -p <id>Le projet.
--limit <n>Combien (20 par défaut, 100 au plus).
--jsonLa liste brute.

Exemples

postship ships -p 3f1c… --limit 5

Les 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

OptionCe qu'elle fait
--project, -p <id>Le projet.
--jsonLe 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

OptionCe qu'elle fait
--project, -p <id>Le projet.
--headAttend 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.
--notifyUne notification du bureau quand le ship est conclu (macOS, Windows, Linux avec notify-send).
--jsonLa réponse brute du ship conclu.

Exemples

git push && postship wait --head --notify

Au quotidien : poussez, passez à autre chose, la notification dit si la prod est bonne.

postship wait -p 3f1c… --sha "$GITHUB_SHA" --timeout 600

Après vercel deploy, dans la même job.

postship wait --min-score 80

Avec ./.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

OptionCe qu'elle fait
--project, -p <id>Le projet.
--min-score <n>Le seuil du ship.
--jsonIncidents et ship, bruts.

Exemples

postship gate -p 3f1c… --min-score 80

Avant 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

OptionCe 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).
--notifyUne notification du bureau à chaque incident ouvert ou résolu.

Exemples

postship watch --notify

Tous les projets, toute la journée, dans un onglet.

postship watch -p 3f1c… --interval 15

Pendant 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

OptionCe qu'elle fait
--project, -p <id>Le projet.

Pages de postship open : apercu, incidents, deploys, urls, performance, reglages.

Exemples

postship open

L'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

OptionCe qu'elle fait
--jsonBrut.

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 doctor

Options

Aucune option.

Exemples

postship doctor

Avant 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

OptionCe qu'elle fait
--project <id>Le projet, sans passer par la liste.
--min-score <n>Le seuil à écrire (80).

Exemples

postship init

Choisir dans la liste, flèches et Entrée.

postship init --project 3f1c… --min-score 90

Sans 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

OptionCe qu'elle fait
--checkDit seulement si une version plus récente existe, sans rien installer.

Exemples

postship update

La dernière version, en une commande.

postship update --check

Savoir 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

OptionCe qu'elle fait
--yesSans confirmation (obligatoire hors d'un terminal).

Exemples

postship uninstall

Tout retirer, proprement.

postship uninstall --yes

Dans 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|powershell

Options

Aucune option.

Exemples

postship completion zsh >> ~/.zshrc

zsh.

postship completion bash >> ~/.bashrc

bash.

postship completion fish > ~/.config/fish/completions/postship.fish

fish.

postship completion powershell >> $PROFILE

PowerShell.

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 wait

La 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.