Docs Autonomy
Intégrations

Webhooks de déploiement

Exécutez le plan de test d'un projet quand votre propre CI, Railway ou Coolify termine un déploiement.

Un webhook de déploiement est une URL qui lance des exécutions. Tout outil capable d'envoyer une requête HTTP à la fin d'un déploiement peut l'appeler : votre propre CI, Railway ou Coolify. Chaque webhook de déploiement appartient à un projet et exécute l'un de ses plans de test dans l'un de ses environnements, sur l'URL déployée quand le déploiement en envoie une.

Utilisez-le pour les hébergeurs qui n'ont pas d'intégration Autonomy dédiée. Pour Vercel, Netlify et Expo EAS, utilisez plutôt leurs intégrations.

Créer un webhook de déploiement

Réservé aux propriétaires et aux administrateurs.

  1. Ouvrez Organization → Integrations → Deploy webhooks.
  2. Sous New deploy webhook, renseignez :
    • Name : par exemple « Railway · Staging ».
    • Project : le projet dont les tests s'exécutent.
    • Environment : les exécutions utilisent ses valeurs et ses connexions, ainsi que son URL quand le déploiement n'en envoie pas (ce que Railway ne fait pas).
    • Test plan : ce qui s'exécute à chaque déploiement. Avec None, les déploiements sont enregistrés mais rien ne s'exécute.
  3. Cliquez sur Create deploy webhook.
  4. Copiez immédiatement l'URL et le Secret. « Copy these now — the secret isn't shown again. »

Chaque webhook de déploiement a sa propre URL et son propre secret. Placez-les dans le gestionnaire de secrets de votre outil, jamais dans un dépôt.

Pour changer le secret, cliquez sur Replace secret : Autonomy en affiche un nouveau une seule fois, et l'ancien cesse de fonctionner immédiatement. Pour arrêter un webhook de déploiement, cliquez sur Remove.

Authentifier la requête

Autonomy accepte trois façons de prouver qu'une requête vient de vous. Si une requête en contient plusieurs, toutes doivent être valides. Un secret erroné, ou une URL qui ne désigne aucun webhook de déploiement, reçoit 401 Unauthorized.

ExpéditeurComment envoyer le secret
Votre propre CISignez le corps brut de la requête avec HMAC-SHA256, en utilisant le secret comme clé, et envoyez X-Autonomy-Signature: sha256=<hex digest>.
RailwayAjoutez l'en-tête Authorization: Bearer <secret>.
CoolifyCoolify ne peut pas envoyer d'en-têtes : utilisez l'URL en y ajoutant ?token=<secret>.

La signature est l'option la plus sûre. Un secret placé dans l'URL peut se retrouver dans des logs : n'utilisez donc ?token= que pour les outils qui ne peuvent pas envoyer d'en-têtes.

Votre propre CI

Envoyez un corps JSON à la fin d'un déploiement :

ChampObligatoireSignification
idOuiL'identifiant de votre déploiement. Chaque couple déploiement et état ne s'exécute qu'une fois.
statusOuiready (ou success, succeeded) lance les exécutions. building, failed, error, canceled et cancelled sont seulement enregistrés.
urlNonL'URL déployée. Les exécutions la testent à la place de l'URL web de l'environnement. Elle doit être une adresse HTTPS publique.
branchNonLa branche déployée.
commitNonLe SHA du commit.
pullRequestNonLe numéro de la pull request.
contextNonpreview, production ou branch.
Appeler le webhook de déploiement après un déploiementbash
body=$(jq -nc \
--arg id "$DEPLOY_ID" \
--arg url "$PREVIEW_URL" \
--arg branch "$BRANCH" \
--arg commit "$COMMIT_SHA" \
'{id: $id, status: "ready", url: $url, branch: $branch, commit: $commit, context: "preview"}')

signature=$(printf '%s' "$body" \
| openssl dgst -sha256 -hmac "$AUTONOMY_DEPLOY_WEBHOOK_SECRET" \
| sed 's/^.* //')

curl -fsS -X POST "$AUTONOMY_DEPLOY_WEBHOOK_URL" \
-H "Content-Type: application/json" \
-H "X-Autonomy-Signature: sha256=$signature" \
--data "$body"

Signez exactement les octets que vous envoyez. Réencoder le JSON après la signature modifie le corps, et la signature ne correspond plus.

Railway

  1. Dans votre projet Railway, ajoutez un webhook et collez l'URL du webhook de déploiement.
  2. Ajoutez l'en-tête Authorization: Bearer <secret>.

Railway envoie des événements de déploiement. Un déploiement réussi lance les exécutions ; les déploiements échoués, plantés et supprimés sont seulement enregistrés. Railway n'envoie pas l'URL déployée : les exécutions testent donc l'environnement du webhook de déploiement. Chaque environnement Railway qui envoie vers l'URL s'exécute sur cet unique environnement : n'envoyez donc que les déploiements de l'environnement Railway auquel il correspond.

Coolify

Dans les paramètres de notification par webhook de Coolify, collez l'URL du webhook de déploiement suivie de ?token=<secret>.

Un événement deployment_success lance les exécutions sur l'adresse déployée, ou sur l'adresse de prévisualisation pour un déploiement de pull request. deployment_failed est seulement enregistré, et les autres événements Coolify sont ignorés.

Ce qui se passe à chaque déploiement

  • Un déploiement prêt lance le plan de test dans l'environnement, sur l'URL déployée quand le déploiement en a envoyé une.
  • Chaque déploiement s'exécute une seule fois. Une requête répétée pour le même déploiement et le même état ne lance pas de deuxième exécution.
  • Rien ne s'exécute si le projet ou l'environnement est archivé, ou si le plan de test est archivé ou ne fait plus partie du projet.
  • Les exécutions apparaissent sur la page Runs du projet comme toutes les autres, et envoient les notifications que vous avez configurées.

Un webhook de déploiement ne publie pas de check GitHub. Pour obtenir un check sur chaque pull request, voir Tests de pull request.

Dépannage

La requête reçoit une erreur 401

Le secret ne correspond pas ou l'URL est erronée. Vérifiez que vous avez copié l'URL en entier, que la signature est calculée sur le corps exact que vous envoyez et que le secret n'a pas été remplacé entre-temps. En cas de doute, cliquez sur Replace secret et mettez à jour votre outil.

La requête aboutit mais aucune exécution ne démarre

Vérifiez que le webhook de déploiement a un Test plan, que status indique que le déploiement est prêt, et que le projet, l'environnement et le plan de test ne sont pas archivés. La ligne du webhook de déploiement indique quand il a reçu son dernier déploiement.

Les exécutions ont testé la mauvaise adresse

Sans url, les exécutions utilisent l'URL web de l'environnement. Envoyez url dans votre corps de requête, ou faites pointer l'environnement vers la bonne adresse.

Vous n’avez pas trouvé ?

On this page