İçeriğe geç

Pipeline tetikleyicilerini kurma

Bir pipeline’ı başlatan şey tetikleyicidir. Her tetikleyici tuvalde bir düğümdür ve düğüm kitaplığının Tetikleyiciler bölümünden bırakılır. O düğümü seçmek, sağda denetçisini açar — her zaman görünen bir tetikleyici listesi, bir tetikleyiciler sekmesi ya da bir tetikleyiciler ekranı yoktur.

  1. Ayarlar → Çalışma alanı → Pipeline şablonları bölümüne gidin.
  2. Düzenleyiciyi açmak için şablonun satırındaki kalem simgesine basın.
  3. Tuvalde bir tetikleyici düğümü seçin. Sağ panel, o tetikleyicinin ayarlarıyla birlikte görünür. Hiçbir şey seçili değilken panel gizlidir.

Düğüm kitaplığının Tetikleyiciler bölümü her başlangıç türünü kendi düğümü olarak listeler: elle çalıştırma, zamanlama, webhook ve her alan olayı için bir kart. merged, ticket ya da tür adını (PrMerged) arayın ve kartı tuvale sürükleyin. Yeni bir şablon, giriş çıpasında ayrıca bir Tetikleyici ekle hayalet kutucuğu gösterir — aynı aranabilir listeden seçin.

Tetikleyici hemen eklenir. Yeni otomatik tetikleyiciler devre dışı başlar; böylece siz onu yapılandırmadan önce bir bırakma bir çalıştırma ateşlemez. Açmak için denetçideki Etkin anahtarını, silmek için çöp kutusu simgesini kullanın.

Elle çalıştırma düğümünü bırakın (ya da hayalet kutucuktan seçin) ve denetçisinde Etkin anahtarını açın. Şablonu çalıştırma başlatıcısında gösteren şey budur. Bu özel bir durum değildir — anahtar, olay türü manual olan sıradan bir tetikleyici satırı yazar. Hemen kalıcı hale gelir; kaydedilecek bir şey yoktur.

Aynı anahtar, düzenleyici başlığındaki Manuel çalıştırma düğmesinin arkasındadır ve orada şablonun bildirilen girdilerinin yanında yer alır.

Şu olaylar bir çalıştırma başlatır:

Seçici etiketi Olay
Harici PR açıldı ExternalPrDetected
PR yayınlandı PullRequestPublished
PR durumu değişti PullRequestStatusChanged
PR birleştirildi PrMerged
Mesaj alındı MessageReceived
Bilet oluşturuldu TicketCreated
Bilet durumu değişti TicketStatusChanged
Bilet atandı TicketAssigned
Bilet tamamlandı TicketCompleted
Bilet başarısız TicketFailed
Bilet iptal edildi TicketCancelled
Bütçe eşiği aşıldı BudgetThresholdCrossed
Depo eklendi RepoAdded
Toplantı kaydı durdu MeetingRecordingStopped
Beceri güncellendi SkillUpdated
Space silindi SpaceDeleted

Yerleşik çalışma ağacı temizleme pipeline’ının dinlediği şey SpaceDeleted olayıdır: silinen alanın kimliğini taşır; böylece çalıştırma, tüm çalışma alanını taramak yerine tam olarak o alanın çalışma ağaçlarını geri kazanır.

Her olayın taşıdığı yük anahtarları için alan olayları referansına bakın.

PR durumu değişti düğümünü seçin. Denetçideki durum çipleri, arayüzün yazabileceği tek filtredir. merged, closed, approved, opened, reopened değerlerinden herhangi birine dokunun; tetikleyici artık yalnızca olayın status değeri bunlardan biriyle eşleştiğinde ateşlenir. Bütün çipleri seçilmemiş bırakmak, filtre yok anlamına gelir.

Serbest biçimli bir JSON filtre alanı yoktur. Olayın yükünde bulunmayan bir filtre anahtarı asla eşleşmez; bu yüzden alan olayları referansında doğrulamadığınız bir anahtara karşı elle filtre yazmayın.

Ne zaman ateşleneceğini düzenlemek için Zamanlama düğümünü seçin. Denetçi alanları bıraktığınız gibi kalıcı olur:

Alan Açıklama
Zamanlama (cron veya every:seconds) Beş alanlı bir cron ifadesi, örneğin 0 9 * * 1, ya da every:86400 gibi bir aralık. Çıplak bir sayı every:<n> biçimine dönüştürülür.
Saat dilimi (isteğe bağlı) Europe/Paris gibi bir IANA saat dilimi. Varsayılan olarak UTC.
Kaçırılan çalıştırmalarda Sunucu kapalıyken kaçırılan ateşlemelerde ne yapılacağı: Bir kez çalıştır, kaçırılan her dilimi yeniden başlatmada tek bir ateşlemede toplar (varsayılan); Atla ise bir sonraki gelecek dilimden devam eder.

Tuvaldeki kutucuğun özet satırı, aralığı yalnızca every:<seconds> biçimi için açıkça yazar; bir cron ifadesi yalnızca “Zamanlama” olarak görünür.

Webhook düğümünü bırakmak rastgele bir token üretir. POST /webhooks/<token> yolunu denetçiden kopyalamak için düğümü seçin.

Token aynı zamanda HMAC gizli anahtarıdır: istek X-Hub-Signature-256: sha256=<hex> başlığını taşımalıdır; burada hex değeri HMAC-SHA256(body, token) ile hesaplanır. Doğrulamayı geçemeyen bir teslimat reddedilir ve günlüğe kaydedilir; yeniden oynatılamaz. Yinelenenler kendi dedupe anahtarlarına göre yok sayılır.

Her başlangıç kendi grafik düğümüdür. Zamanlama’dan bir tel çekmek yalnızca Zamanlama’yı bağlar; Elle çalıştırma ise aynı işe katılmadan önce farklı bir yol izleyebilir (örneğin bir koşul düğümü). Bir çalıştırma, olay türüyle eşleşen başlangıca girer ve diğer başlangıçlara ait alt grafikleri atlar.

Olay türü ve filtresi eşleşen etkin bir tetikleyici, olayın yükünü çalıştırmanın tetikleyici yükü olarak kullanarak bir çalıştırma başlatır — bir adımın isteminde ya da betiğinde {{key}} ifadesinin çözümlendiği şey budur. Doğal bir anahtar taşıyan olaylar tekilleştirilir; böylece aynı olayın iki kez ateşlenmesi iki çalıştırma başlatmaz.

Devre dışı bir şablon, tetikleyicisi eşleşse bile reddedilir. Yerleşik on üç şablonun sekizi devre dışı gelir; bu yüzden tohumlanan tetikleyicileri, siz şablonu açana kadar boşluğa ateş eder.

  • Yalnızca elle çalıştırma yoluna kapı koyun — Elle çalıştırma’yı bir koşul düğümü üzerinden, Zamanlama’yı ise doğrudan işe bağlayın. Her başlangıç kendi tellerine sahiptir.
  • Her yeni PR’ı inceleyin — pr_review şablonunda PR yayınlandı olayı.
  • Birleştirmeden sonra temizlik yapın — merged / closed / approved değerlerine filtrelenmiş PR durumu değişti olayı. Yerleşik pr_merged_cleanup şablonu zaten bu şekilde dinler; ayrıca bilet tamamlandı/iptal edildi, SpaceDeleted ve çöp toplama olduğu için her yeniden tohumlamada zorla etkinleştirilen günlük bir zamanlama.
  • Gece taraması — ilk düğümü bir bash betiği olan bir şablonda, saat dilimiyle birlikte 0 2 * * * zamanlaması.
  • Harici bir sisteme tepki verin — bir webhook tetikleyicisi; çağıran sistem istek gövdesini yukarıdaki gibi imzalar.