Orbit
Orbit Web Kancaları
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…
Webhook'lar bir dağıtımın durumu her değiştiğinde imzalı bir HTTP POST'u seçtiğiniz bir URL'ye gönderir, böylece ekibiniz başarısız bir derleme hakkında zaten izledikleri kanalda bilgi alır ve bunu müşteriden öğrenmek yerine.
Webhook'lar Nerede Bulunur
Orbit açın, projeyi tıklayın ve proje sekmesi şeridinde Configure grubu altında Webhooks seçeneğini seçin. Sayfa Webhooks başlıklıdır ve kendisini dağıtımlar durumu değiştiğinde HTTP POST bildirimleri alan, Slack, Discord ve genel JSON desteklenen şey olarak tanımlar.
Webhooks ve Hooks farklı şeylerdir ve aynı menüde yan yana bulunur. Webhook'lar giden: Orbit size bir şey oldu söyler. Deploy hook'ları gelen: bir şey Orbit'e dağıtmasını söyler. Bunlar için bkz. Triggering Deployments Via Deploy Hooks.

Webhook Ekleme
- Add a webhook kartında ona bir Label verin. Gönderdiği hedef gibi bir şey.
- URL yapıştırın.
https://ile başlamalıdır. - Trigger on altında istediğiniz olayları işaretleyin.
- Add webhook tıklayın.
İmza sırrı oluşturulduktan hemen sonra bir kez gösterilir, tekrar gösterilmeyeceği uyarısıyla. Uzaklaşmadan önce kopyalayın.
Bir proje en fazla on webhook tutabilir. Onbirinci eklenmesi sınırı adlandıran bir mesajla reddedilir.
Beş Olay
| Olay | Ne zaman tetiklenir |
|---|---|
| Queued | Dağıtım kuyruğa girer |
| Building | Derleme başlar |
| Succeeded | Dağıtım canlıdır |
| Failed | Derleme veya dağıtım hata verdi |
| Cancelled | Dağıtım tamamlanmadan önce durduruldu |
Kasıtlı olarak seçin. Meşgul bir projede beşin tümüne abone olmak faydalı bir uyarı kanalını herkesin sesini kısttığı gürültüye çevirir. Çoğu takım için, Failed yalnız doğru başlangıç noktasıdır; Succeeded yalnızca üretim kanalı gibi dağıtım bildirimi gerçekten faydalı olduğu yerlerde eklenmelidir.
Slack ve Discord
URL bir Slack gelen webhook'u veya Discord webhook'u ise, Orbit bunu URL'den tespit eder ve ham JSON yerine biçimlendirilmiş bir mesaj gönderir. Sayfa bunu URL alanının altında söyler: Slack ve Discord URL'leri otomatik olarak algılanır.
Biçimlendirilmiş mesaj proje adını, olayı, dalı, kısa commiti, derleme zamanını, dağıtılan URL'yi ve bir şey başarısız olduğunda hata metnini taşır. Renk olayı takip eder, bu nedenle kanaldaki kırmızı bir kart kimse okumadan bir hatayı ifade eder.
Başka bir şey gerekli değildir. Slack veya Discord'da gelen webhook'u oluşturun, URL'yi buraya yapıştırın, olaylarınızı seçin ve işiniz bitti.
Genel JSON Yükleri
Diğer herhangi bir URL bir JSON gövdesi alır. Alanlar şunlardır:
| Alan | İçerik |
|---|---|
event | Beş olay adından biri, deployment. ön ekli |
projectId, projectName, projectSlug | Hangi proje |
deploymentId | Bu dağıtım hakkında |
gitCommit, gitBranch, gitCommitMessage | Dağıtılan kod |
buildDurationMs | Derleme zamanı, bilindiği durumlarda |
deployedUrl | Canlı olduğu yer |
panelUrl | KPanel'e geri bir bağlantı |
errorMessage | Hatalar üzerinde mevcut |
triggeredAt | ISO 8601 zaman damgası |
deliveryId | Teslimat başına benzersiz, çoğaltma kaldırma için |
Uç noktanızı idempotent yapmak için deliveryId kullanın. Bir teslimatı yeniden denerseniz veya bir ağ aksaklığı bir çoğaltmaya neden olursa, id bunun zaten işlendiğini tanımanıza izin verir.
İmzayı Doğrulama
Her teslimat üç başlık taşır:
X-Orbit-Signature-256, imza sırrınızı kullanarak tam istek gövdesinin bir HMAC-SHA256'si,sha256=ve hex digest olarak biçimlendirilmiş.X-Orbit-Event, olay adı.X-Orbit-Delivery, teslimat id'si.
Yüke göz koymazdan önce imzayı doğrulayın. Ham gövde baytları üzerinde aynı HMAC'i hesaplayın ve string eşitliği yerine sabit zamanlı karşılaştırma kullanarak karşılaştırın.
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();
}
HMAC'i ham istek gövdesi üzerinde, herhangi bir JSON ayrıştırması ve yeniden serileştirmeden önce hesaplayın. Ayrıştırılmış ve tekrar stringleştirilmiş bir gövde genellikle bayt açısından farklıdır ve imza kodunuz ne kadar doğru görünse de asla eşleşmeyecektir.
Webhook'u Test Etme
Her webhook satırında Send test delivery bulunur. Bu, uç noktanıza gerçek bir teslimat gönderir ve aldığı HTTP kodunu rapor eder veya başarısızlık detayını rapor eder.
Bir webhook ekledikten hemen sonra kullanın, buna güvenmeden önce. Bir güvenlik duvarı kuralı veya yalnızca GET'i kabul eden bir rota bir olay sırasından çok daha kolay bulunur.
Teslimat Geçmişi
Her satır son yedi günün bir sparkbar'ını teslimat sayısı, başarı yüzdesi ve ortalama süre ile birlikte taşır; artı son tetiklenme zamanı ve sonucu.
Bireysel teslimatlar için Show delivery history öğesini genişletin: olay, yanıt kodu, süre ve varsa hata metni. Herhangi bir teslimat Retry delivery ile yeniden gönderilebilir, bu da aldığı kodu rapor eder.
Teslimatlar on iki saniye sonra zaman aşımına uğrar. Uç noktanız yavaş çalışma yaparsa, bağlantıyı açık tutmak yerine 200 ile yanıtlayın ve daha sonra işleyin.
Sırrı Döndürme
Rotate secret tıklayın. Yeni sır bir kez gösterilir ve ipucu eski sırrın hemen geçersiz olduğunu açıkça belirtir.
Bu, teslimatların uç noktanızın bilmediği bir sırla imzalandığı kısa bir pencere anlamına gelir. Buna hazırlık yapın: sessiz bir anda döndürün ve uç noktanızı sonraki çok hareket olarak güncelleyin.
Sırrına erişim hakkı olan birisi ayrıldığında veya paylaşılan bir kanala veya bir bilette yapıştırıldığında döndürün.
Devre Dışı Bırakma ve Silme
Disable webhook teslimatları durdurur ancak yapılandırma ve geçmişi tutar ve satır bir Disabled rozeti gösterir. Bu, planlı bir geçiş sırasında uyarıları duraklatırken olduğu gibi uygun seçimdir ve bu da çok fazla gürültü üretecektir.
Delete webhook tamamını kaldırır. Emin olmadığınız sürece devre dışı bırakmayı kullanın.
Bildirim Almak İçin Diğer Yollar
Webhook'lar esnek seçenektir. İki daha hafif alternatif Settings'te bulunur:
- Deploy email notifications, üç ayarla: tüm dağıtımlar, yalnızca hatalar veya kapalı.
- Notification channels, dağıtım başarısı veya başarısızlığında, derleme regresyonlarında ve paket regresyonlarında bir webhook URL'sine gönderir; kendi teslimat geçmişi ve test düğmesiyle.
Her ikisi için bkz. Orbit Project Settings.
Sorun Giderme
Teslimatlar bir HTTP kodu ile başarısız olarak gösterilir. Uç noktanız bir hata döndürdü. Kod size hangi olduğunu söyler: 404 yolu yanlış anlamına gelir, 401 veya 403 genellikle kendi imza kontrolünüzün reddettiği anlamına gelir ve 500 işleyicinizin attığı anlamına gelir.
Teslimatlar zaman aşımı ile başarısız olur. Uç noktanız on iki saniyeden uzun sürdü. 200'ü hemen döndürün ve işi asenkron olarak yapın.
Hiçbir şey teslim edilmez. Webhook'un etkinleştirildiğini ve beklediğiniz olayın işaretlendiğini kontrol edin. Asla sıraya girmemiş bir derleme kuyruklanmış bir olay tetiklemez.
İmza asla doğrulamamıştır. Hemen hemen her zaman yukarıda açıklanan ham gövde sorunu. Karma yaptığınız tam baytları kaydedin ve uzunluklarını Content-Length başlığıyla karşılaştırın.
Slack URL'si ham JSON gönderiliyor. Slack gelen webhook'ları hooks.slack.com altında bulunur. Farklı bir Slack URL'si biri olarak algılanmayacaktır.
Sonra Nereye Gidilir
- Gelen yön için Triggering Deployments Via Deploy Hooks.
- E-posta bildirimleri ve bildirim kanalları için Orbit Project Settings.
- Müşterilerinize, sadece ekibinize değil söylemek için Orbit Status Page.