İçeriğe geç

Bir pipeline şablonu oluşturma

Pipeline şablonları çalışma alanı ayarlarında yazılır. Çalışma alanı kenar çubuğundaki Pipelines girdisi çalıştırma kuyruğudur, şablon listesi değildir — orada “şablon oluştur” diye bir eylem yoktur.

Her adım türünün, gövde anahtarının ve yapılandırma alanının ne anlama geldiği için pipeline adımları referansına bakın.

  1. Ayarlar → Çalışma alanı → Pipeline şablonları sayfasına gidin (/workspaces/<workspace-id>/settings/pipelines).
  2. Yeni şablon’a basın.

Kimlik soran bir iletişim kutusu yoktur. Düzenleyici hemen, Yeni pipeline adlı tohumlanmış bir iskelet üzerinde otomatik atanmış bir kimlikle (pipeline_1, sonra pipeline_2, …) açılır. Yeniden adlandırmak için üst bilgideki başlığa tıklayın.

Tuval boş değildir: bir Trigger giriş düğümü, Step etiketli bir prompt ajanı düğümü ve çalıştırmayı bitiren bir terminal nöbetçisi vardır. Nöbetçi çizilmez. Düzenleyici bu gizli terminali ulaşılabilir her çıkışsız düğüme yeniden bağlar; böylece Step’ten sonra eklediğiniz iş yine çalışır.

Düğüm kitaplığı kenar çubuğu düzenleyicinin solunda kalıcı olarak durur. Onu Düğüm ara kutusuyla filtreleyin ve bir girdiyi tuvale sürükleyin — düğüm, bıraktığınız yere ve hiçbir gelen bağlantısı olmadan yerleşir.

Palet düğümü Adım türü Ne yapar
Bash betiği listen Bir kabuk betiğini {{state}} yerine koyarak çalıştırır; hiçbir ajan gönderilmez
Konuşma aç listen Çalıştırmanın tek görünür alanını ve onun checkout’unu açar; ajan düğümleri bu odaya katılır
PR dalını klonla listen PR baş dalını gh pr view ile bulur ve çalıştırma dizinine klonlar
PR yorumu gönder listen Birleştirilmiş bulguları PR’a GitHub inceleme yorumu olarak gönderir
İnceleyici (prompt) listen Uzman bir inceleyici ajanı gönderir; ajan sonucunu gönderene kadar askıda kalır
Birleştir (join) join Birkaç üst dalı bekler, ardından bir ajandan çıktılarını birleştirmesini ister
Özel prompt listen promptAgent gövdesi üzerinden yönlendirilen, prompt güdümlü genel düğüm
Alana gönder listen Bir mesajlaşma alanına ileti gönderir
Koşul / switch (router) router Akışı bir durum değerine göre dallandırır
Dosya varsa (router) router Klon altında bir yol varsa "true", yoksa "false" yönlendirir
Herhangi bir dosya varsa (VEYA router) router Listelenen yollardan herhangi biri varsa "true" yönlendirir
Tüm koşullar (VE router) router Yalnızca listelenen her yol varsa "true" yönlendirir
Takım gönderimi listen Bütün bir takımı gönderir ve takım bitene kadar askıda kalır
Onay kapısı listen Bir onay kararı için duraklar
Her öğe için (map) forEach Her öğe için bir prompt oluşturur, ardından ajanı bu promptlar birleştirilmiş halde bir kez gönderir
Alt pipeline çağır listen Başka bir şablonu iç içe adım olarak çalıştırır
Çalışma ağaçlarını temizle listen Bayat yalıtılmış çalışma ağaçlarını kaldırır; deterministiktir, ajan gönderilmez

Kitaplık bunları Akış ve mantık, PR incelemesi, Ajanlar, Mesajlaşma ve Kod başlıkları altında gruplar. Demo grubu yoktur.

Her iş düğümünün sağ kenarında yuvarlak bir çıktı bağlantı noktası vardır. Bağlamak için o noktadan başka bir düğüme sürükleyin. Başlatma tetikleyicileri de aynıdır: her biri kendi bağlantı noktasına sahiptir, dolayısıyla Zamanlama’dan gelen bir kablo Elle çalıştırma’dan da çıkmaz. Bir düğümün hemen ardına bir tür eklemek için Adım ekle’ye (+) basın. Mevcut bir kenarın orta noktasının üzerine gelin ve bağlantıyı kesmek için × işaretine basın.

Bağlantılar, bunları alan düğümden de düzenlenir:

  1. Alt düğümü seçin. Yapılandırma paneli sağda açılır.
  2. Gelen tetikleyiciler bölümüne kaydırın ve bu düğümün dinlemesi gereken her üst düğümün çipine dokunun. Seçili bir çipe yeniden dokunmak bağlantıyı kaldırır.
  3. Bir üst düğüm router ise, çiplerin altında her router kenarı için bir <node> kaynağından rota anahtarı alanı bulunan bir Rota anahtarları bloğu görünür. O kenarın tetiklendiği anahtarı girin — dosya varlığı router’ları için true veya false, bir switch içinse durum adı.

Her tetikleyici düğüm bir giriş noktasıdır. Bir düğüm birkaç üst düğümü dinleyebilir (fan-in) ve birkaç alt düğümü besleyebilir (fan-out); grafik döngüsüz kalmalıdır — düzenleyicide sizi bir döngü bağlamaktan alıkoyan hiçbir şey yoktur, bu yüzden işinizi kontrol edin.

Terminal nöbetçisi tuvalden filtrelenir, bu yüzden seçilemez. Düzenleyici, grafik her değiştiğinde onu ulaşılabilir her çıkışsız düğüme yeniden bağlar; böylece tohumlanmış Step’ten sonra eklediğiniz iş yine çalışır. Boş bir grafik (ardılı iş olmayan bir tetikleyici) tetikleyicinin kendisini listeler, böylece çalıştırma hemen tamamlanır.

Yapılandırma panelini açmak için bir düğüm seçin. Hangi alanların görüneceği düğümün gövdesine bağlıdır.

Her düğümde Etiket, Girdi anahtarları (yürütme anında okunan virgülle ayrılmış durum anahtarları) ve Gelişmiş altında Reducer, Zaman aşımı (ms), Yeniden deneme sayısı, Bu adım başarısız olsa da devam et ve Çıktı şeması bulunur. Listen ve join düğümleri ayrıca Tür’lerini bu ikisi arasında değiştirebilir.

Bir depo kapsamı seçici (çalışma alanının hangi depolarının checkout edileceği; boş, hiçbiri anlamına gelir), bir Alan adı ve bir İçinde bir konuşma aç onay kutusu ekler. Bu onay kutusu açıkken bir Konuşma adı alanı, odanın açıldığı akışa ad verir. Ajan düğümleri bu odaya katılır — kendileri bir oda açmaz.

Ajan (hangi ajanın gönderileceği), Prompt (girdilere veya üst adım çıktılarına başvurmak için {{key}} kullanın) ve Çıktı anahtarı ekler.

Zaman aşımı (ms) saniye değil, milisaniye cinsindendir — 900000 15 dakikadır. 900 girmek adıma 0,9 saniye verir.

Bir prompt ajanı düğümünün altında çalıştığı konuşma modunun ajan düğümünde hiçbir düzenleyici alanı yoktur. Bu mod, odayı oluşturan Konuşma aç düğümündeki extras['mode'] (chat, plan veya review) üzerinden taşınır (varsayılan review). Bunu bir ajan adımında ayarlamak yok sayılır. Anahtar tam olarak eşleştirilir: başka her yazım sessizce yok sayılır.

Betik ekler. Ne çalışma dizini ne de ortam alanı vardır, çünkü ikisi de yapılandırılamaz:

  • Bir çalıştırmadaki her bash adımı aynı cwd’yi paylaşır: <cc_root>/pipelines/<runId>/.
  • GITHUB_TOKEN, kimlik bilgisi deposundan enjekte edilir; böylece gh ve git clone https://x-access-token:$GITHUB_TOKEN@… ek bir kurulum olmadan çalışır.
  • Betik, birebir bash yürütülebilir dosyası olarak başlatılır; bu yüzden bash, sunucu ana makinesinin PATH’inde olmalıdır. Bu, Windows’a özgü bir husustur.

Router bir koşulu değerlendirir ve bir rota anahtarı döndürür; motor yalnızca rota anahtarı eşleşen alt kenarı tetikler ve diğer dalları atlandı olarak işaretler.

Bir router seçmek, Çıktı anahtarı alanının yerine koşul düzenleyicisini koyar. Dört modundan birini seçin:

  • Dosya(lar) var — herhangi biri — listelenen yollardan herhangi biri varsa "true" yönlendirir.
  • Dosyalar var — tümü — yalnızca listelenen her yol varsa "true" yönlendirir.
  • Karşılaştırma — bir durum değerini bir sabitle karşılaştırır.
  • Switch — varsayılan bir durumla birlikte bir durum anahtarının değerine göre yönlendirir.

Ardından, giden kenarlarda eşleşen rota anahtarlarını ayarlayın (bkz. Düğümleri birbirine bağlama).

Boolean and / or / not grupları gövde tarafından desteklenir, ancak bu formdan yazılamaz — extras.predicate altında elle yazılmış bir yüklem ağacı gerektirirler. Yüklem ve operatör sözlüğünün tamamı pipeline adımları referansında bulunur.

Kendine ait bir yapılandırması yoktur: tüm üst adımlarını bekler.

Kapı, onaylayıcı ajanı kapı prompt’uyla gizli bir konuşmaya gönderir ve askıda kalır. Onaylayıcı, konuşmada kararınızı ister ve bunu submit_output ile { "decision": "approved" | "rejected", "reason": "..." } biçiminde gönderir. Karar, çıktı anahtarının altına düşer (varsayılan approval_decision), böylece alt taraftaki bir switch router buna göre dallanabilir.

Ajan alanını onaylayıcıya, Prompt alanını da kapı sorusuna ayarlayın. Kapı, submit_output üzerinden { "decision": "approved" | "rejected", "reason": "..." } biçiminde sonuçlanır. İnceleyici (prompt) düğümleri de aynı şekilde gönderir.

Takım kimliği ve Gönderim kipi ekler. Seçici tam olarak iki kip sunar:

  • allParallel — üye başına bir görev; tümü tamamlanana kadar askıda kalır.
  • manager — lideri gönderir; lider de işi devreder.

Saklanan başka herhangi bir değer allParallel gibi davranır. Her üyenin sonucunu çıktı anahtarı altında bir listede toplamak için Reducer’ı append yapın.

Her öğe için, varsayılan olarak items durum anahtarı üzerinde eşler (düğümde extras.iterableKey / extras.itemKey). Prompt’unu her öğe için bir kez oluşturur (varsayılan olarak {{item}}) ve ajanı, bu promptlar birleştirilmiş halde bir kez gönderir. Boş bir koleksiyon hemen boş bir listeyle tamamlanır. Öğe başına bir paralel gönderim değildir.

Alt pipeline çağır, alt çalıştırma terminal bir duruma ulaşana kadar askıda kalır, ardından alt çalıştırmanın son durumunu çıktı anahtarı altında birleştirir (varsayılan subflow_result). Onu extras.templateId ile bir alt şablona yöneltin. Bir şablon kendini çağıramaz; başarısız olan veya iptal edilen bir alt çalıştırma üst adımı başarısız kılar, bu da o adımın yeniden deneme ve başarısızlıkta devam politikasını besler.

Girdileri bildirme ve elle çalıştırmalara izin verme

Bölüm başlığı “Girdileri bildirme ve elle çalıştırmalara izin verme”

İkisi de düzenleyicinin üst bilgisindeki Manuel çalıştırma’nın arkasındadır.

  1. Manuel çalıştırma’ya basın.
  2. Manuel çalıştırmaya izin ver anahtarını açın. Bu anahtar hemen kalıcı olur — şablonun çalıştırma başlatıcısında görünmesini sağlayan manual tetikleyici satırını oluşturur (veya siler).
  3. Bir üst sınır istiyorsanız Maks. paralel çalıştırma değerini ayarlayın (sınırsız için boş bırakın). Fazladan başlatmalar, bir yer boşalana kadar queued durumunda bekler.
  4. Elle bir çalıştırmanın toplaması gereken her form alanı için Girdi ekle’ye basın:
Alan Açıklama
Anahtar Değerin saklandığı durum anahtarı; ona {{key}} ile başvurun
Etiket Görünen etiket (varsayılan olarak anahtar)
Tür Metin, Çok satırlı metin, Sayı, Geçiş, Seçim, Repository
Seçenekler Virgülle ayrılmış seçenekler; yalnızca Seçim için
Varsayılan değer Önceden doldurulmuş değer
Yer tutucu Boş alanın içindeki ipucu metni
Yardım metni Alanın altındaki yardımcı metin
Zorunlu Çalıştırma formunun boş bir değerde engelleyip engellemeyeceği

Bir Repository girdisi, çalışma alanının depoları üzerinde bir seçici oluşturur ve repo_id, repo_local_path, repo_full_name ile — deponun bir GitHub uzak deposu varsa — repo_owner ve repo_name değerlerini çalıştırma yüküne doldurur.

  1. İletişim kutusunda Kaydet’e basın. Girdi düzenlemeleri taslağa katılır; şablonu kaydettiğinizde kalıcı olur.
  1. Düzenleyicinin üst bilgisinde Kaydet’e basın. Siz bunu yapana kadar üst bilgide “Kaydedilmemiş değişiklikler” yazar.
  2. Ayarlar → Çalışma alanı → Pipeline şablonları sayfasına dönün ve şablonun satırındaki anahtarın açık olduğunu kontrol edin. Motor, devre dışı bir şablonu başlatmayı reddeder ve devre dışı bir şablon çalıştırma başlatıcısında asla görünmez.
  3. Otomatik başlatmak için düğüm kitaplığından bir tetikleyiciyi tuvale sürükleyin — bkz. Pipeline tetikleyicilerini kurma.