Orbit
Webhook di Orbit
Webhooks push a signed HTTP POST to a URL of your choosing every time a deployment changes state, so your team hears about a failed build in the channel they already watch instead of finding out…
I webhooks inviano un HTTP POST firmato a un URL di tua scelta ogni volta che lo stato di una distribuzione cambia, quindi il tuo team viene informato di una build fallita nel canale che già segue invece di scoprirlo da un cliente.
Dove Si Trovano I Webhooks
Apri Orbit, fai clic sul progetto e scegli Webhooks nel gruppo Configure nella barra delle schede del progetto. La pagina è intitolata Webhooks e si descrive come ricevente di notifiche HTTP POST quando le distribuzioni cambiano stato, con supporto per Slack, Discord e JSON generico.
Webhooks e Hooks sono cose diverse e si trovano uno accanto all'altro nello stesso menu. I webhooks sono in uscita: Orbit ti dice che qualcosa è accaduto. I deploy hooks sono in entrata: qualcosa dice a Orbit di distribuire. Per quelli, vedi Attivazione delle Distribuzioni Via Deploy Hooks.

Aggiunta Di Un Webhook
- Nella scheda Add a webhook, assegnagli un Label. Qualcosa come la destinazione a cui invia.
- Incolla l'URL. Deve iniziare con
https://. - Sotto Trigger on, spunta gli eventi che desideri.
- Fai clic su Add webhook.
Il segreto di firma viene mostrato una sola volta, immediatamente dopo la creazione, con un avvertimento che non verrà più mostrato. Copialo prima di navigare altrove.
Un progetto può contenere fino a dieci webhooks. L'aggiunta di un undicesimo viene rifiutata con un messaggio che nomina il limite.
I Cinque Eventi
| Evento | Si attiva quando |
|---|---|
| Queued | La distribuzione entra in coda |
| Building | La build inizia |
| Succeeded | La distribuzione è in diretta |
| Failed | La build o la distribuzione ha generato un errore |
| Cancelled | La distribuzione è stata interrotta prima di terminare |
Scegli deliberatamente. L'iscrizione a tutti e cinque su un progetto attivo trasforma un canale di avviso utile in rumore che tutti disattivano. Per la maggior parte dei team, Failed da solo è il punto di partenza giusto, con Succeeded aggiunto solo dove una notifica di distribuzione è genuinamente utile, come un canale di produzione.
Slack E Discord
Se l'URL è un webhook in arrivo di Slack o un webhook di Discord, Orbit lo rileva dall'URL e invia un messaggio formattato anziché JSON grezzo. La pagina lo dice sotto il campo URL: gli URL di Slack e Discord vengono rilevati automaticamente.
Il messaggio formattato riporta il nome del progetto, l'evento, il ramo, il commit breve, il tempo di build, l'URL distribuito e il testo di errore quando qualcosa è fallito. Il colore segue l'evento, quindi una scheda rossa nel canale significa un errore senza che nessuno la legga.
Non è necessario nulla di più. Crea il webhook in arrivo in Slack o Discord, incolla l'URL qui, scegli i tuoi eventi e hai finito.
Payload JSON Generici
Qualsiasi altro URL riceve un corpo JSON. I campi sono:
| Campo | Contenuti |
|---|---|
event | Uno dei cinque nomi di evento, con prefisso deployment. |
projectId, projectName, projectSlug | Quale progetto |
deploymentId | La distribuzione di cui si tratta |
gitCommit, gitBranch, gitCommitMessage | Il codice in corso di distribuzione |
buildDurationMs | Tempo di build, dove noto |
deployedUrl | Dove è andato in diretta |
panelUrl | Un collegamento indietro in KPanel |
errorMessage | Presente in caso di errori |
triggeredAt | Timestamp ISO 8601 |
deliveryId | Unico per consegna, per deduplicazione |
Usa deliveryId per rendere il tuo endpoint idempotente. Se ripeti una consegna, o un hiccup di rete causa un duplicato, l'id ti consente di riconoscere che l'hai già gestito.
Verifica Della Firma
Ogni consegna include tre intestazioni:
X-Orbit-Signature-256, un HMAC-SHA256 del corpo della richiesta esatta utilizzando il tuo segreto di firma, formattato comesha256=seguito dal digest esadecimale.X-Orbit-Event, il nome dell'evento.X-Orbit-Delivery, l'id della consegna.
Verifica la firma prima di agire su un payload. Calcola lo stesso HMAC sui byte del corpo grezzo e confronta utilizzando un confronto a tempo costante anziché uguaglianza tra stringhe.
const expected = 'sha256=' + crypto
.createHmac('sha256', process.env.ORBIT_WEBHOOK_SECRET)
.update(rawBody)
.digest('hex');
if (!crypto.timingSafeEqual(Buffer.from(expected), Buffer.from(received))) {
return res.status(401).end();
}
Calcola l'HMAC sul corpo della richiesta grezzo, prima di qualsiasi analisi e ri-serializzazione JSON. Un corpo che è stato analizzato e stringify di nuovo è di solito diverso in byte e la firma non corrisponderà mai indipendentemente da quanto corretto appaia il tuo codice.
Test Di Un Webhook
Ogni riga di webhook ha Send test delivery. Attiva una consegna reale al tuo endpoint immediatamente e segnala il codice HTTP che ha ricevuto, o il dettaglio dell'errore.
Usalo subito dopo aver aggiunto un webhook, prima di affidarci. Una regola del firewall o una route che accetta solo GET è molto più facile da trovare ora che durante un incidente.
Cronologia Delle Consegne
Ogni riga contiene una sparkbar degli ultimi sette giorni con il conteggio delle consegne, la percentuale di successo e la durata media, più l'ultimo orario di attivazione e il suo risultato.
Espandi Show delivery history per le singole consegne: l'evento, il codice di risposta, la durata e il testo di errore dove ce n'è uno. Qualsiasi consegna può essere inviata nuovamente con Retry delivery, che segnala il codice che ha ricevuto.
Le consegne scadono dopo dodici secondi. Se il tuo endpoint svolge lavori lenti, riconosci con un 200 per primo e elabora successivamente, anziché mantenere la connessione aperta.
Rotazione Del Segreto
Fai clic su Rotate secret. Il nuovo segreto viene visualizzato una sola volta e il tooltip è esplicito sul fatto che il vecchio segreto diventa immediatamente non valido.
Ciò significa una breve finestra in cui le consegne sono firmate con un segreto che il tuo endpoint non conosce. Pianificalo: ruota in un momento tranquillo e aggiorna il tuo endpoint come prossima azione.
Ruota quando qualcuno con accesso al segreto se ne va, o se è stato mai incollato in un canale condiviso o in un ticket.
Disabilitazione E Eliminazione
Disable webhook interrompe le consegne ma mantiene la configurazione e la cronologia, e la riga mostra un badge Disabled. Questa è la scelta giusta quando stai sospendendo gli avvisi, ad esempio durante una migrazione pianificata che produrrà molto rumore.
Delete webhook la rimuove completamente. Usa disable a meno che non sei sicuro.
Altri Modi Per Essere Notificato
I webhooks sono l'opzione flessibile. Due alternative più leggere si trovano in Settings:
- Deploy email notifications, con tre impostazioni: tutte le distribuzioni, solo gli errori, o no.
- Notification channels, che inviano a un URL di webhook al successo o al fallimento della distribuzione, alle regressioni di build e alle regressioni di bundle, con la loro cronologia di consegna e pulsante di test.
Vedi Impostazioni Progetto Orbit per entrambi.
Risoluzione Dei Problemi
Le consegne vengono visualizzate come non riuscite con un codice HTTP. Il tuo endpoint ha restituito un errore. Il codice ti dice quale: 404 significa che il percorso è sbagliato, 401 o 403 di solito significa che il tuo controllo della firma lo sta rifiutando, e 500 significa che il tuo handler ha generato un'eccezione.
Le consegne non riescono con un timeout. Il tuo endpoint ha impiegato più di dodici secondi. Restituisci 200 immediatamente e fai il lavoro in modo asincrono.
Nulla viene consegnato affatto. Verifica che il webhook sia abilitato e che l'evento che ti aspettavi sia selezionato. Una build che non è mai stata messa in coda non attiva un evento queued.
La firma non convalida mai. Quasi sempre il problema del corpo grezzo descritto sopra. Registra i byte esatti che stai hash e confronta la loro lunghezza con l'intestazione Content-Length.
Un URL Slack viene inviato come JSON grezzo. Gli incoming webhooks Slack si trovano sotto hooks.slack.com. Un URL Slack diverso non verrà rilevato come uno.
Dove Andare Dopo
- Attivazione delle Distribuzioni Via Deploy Hooks per la direzione in entrata.
- Impostazioni Progetto Orbit per notifiche email e canali di notifica.
- Pagina Di Stato Orbit per dire ai tuoi clienti, non solo al tuo team.