Multica Docs

Otopilotlar

Tekrarlayan işi agent'lara otomatik olarak devredin — bir zamanlamayla veya bir webhook'tan.

Otopilotlar, tekrar tekrar gerçekleşen işi çalıştırır — günlük bir ilerleme özeti, periyodik bir bağımlılık kontrolü veya harici bir sistemden gelen bir olayla başlatılan bir agent.

Her Otopilot bir Runbook, bir atanan ve bir veya daha fazla tetikleyici saklar. Tetiklendiğinde Multica bir iş oluşturur veya agent'ı doğrudan çalıştırır, ve her çalıştırmanın kaydını tutar.

Bir Otopilot oluşturma

Kenar çubuğunda Otopilot'u açın, bir şablon seçin veya sıfırdan başlayın, ardından şunları yapılandırın:

  • Ad: bu Otopilotun neden sorumlu olduğu;
  • Runbook: agent'ın her çalıştırmada okuduğu hedef, arka plan, kısıtlamalar ve adımlar;
  • Atanan: bir agent veya bir Ekip;
  • Proje: isteğe bağlı; otomatik oluşturulan işleri belirli bir projeye koyar;
  • Çalıştırma modu: bir iş oluştur, ya da yalnızca çalıştır;
  • Aboneler: bir iş otomatik oluşturulduktan sonra bilgilendirilecek üyeler;
  • Tetikleyiciler: bir zamanlama veya bir webhook.

Bir Otopilot kaydedildikten sonra varsayılan olarak etkindir; Şimdi çalıştır, tam akışı istediğiniz zaman elle bir kez yürütür.

Bir çalıştırma modu seçme

ModDavranışEn uygun olduğu durum
İş oluşturHer tetikleyici önce bir iş oluşturur, sonra onu atanana atar; tartışma, durum ve çalıştırma kayıtlarının tümü işte yer alır.Takımın gözden geçirmesi, onaylaması veya takip etmesi gereken iş.
Yalnızca çalıştırİş olmadan doğrudan bir çalıştırma oluşturur; sonuçlar yalnızca Otopilotun çalıştırma geçmişinde görünür.İşbirliği kaydı gerektirmeyen arka plan çalıştırmaları.

İş oluştur modu, normal işlerle aynı çalıştırma kuyruğunu kullanır: runtime çevrimdışıyken iş yine de oluşturulur ve çalıştırma, runtime'ın çevrimiçi olmasını bekler.

Yalnızca çalıştır, tetikleme anında runtime'ın kullanılabilir olmasını gerektirir; aksi halde çalıştırma atlandı olarak görünür ve geride bekleyen bir iş kalmaz.

Bir zamanlamada çalıştırma

Zamanlama düzenleyicisi, çalıştırma saatini, tekrar günlerini, zaman penceresini ve saat dilimini seçmenizi sağlar ve yaklaşan çalıştırma zamanlarını önizler. Bir Otopilotun birden fazla zamanlaması olabilir; tek bir tetikleyiciyi etkinleştirmek veya devre dışı bırakmak CLI'ın autopilot trigger-update komutuyla yapılır — parametreler için CLI'ı kullanma'ya bakın.

Daha karmaşık kurallara ihtiyacınız olduğunda, standart 5 alanlı cron'u doğrudan düzenleyin:

minute hour day month weekday

Örneğin:

CronSaat dilimiAnlamı
0 9 * * 1-5Asia/ShanghaiHafta içi 9:00
*/30 * * * *UTCHer 30 dakikada bir
0 3 * * *UTCHer gün 3:00'te

Cron'un saniye alanı yoktur ve saat dilimleri Asia/Shanghai gibi IANA adlarını kullanır. Kaydetmeden önce sonucu sayfada gösterilen "sonraki çalıştırmalar" zamanlarıyla karşılaştırın.

Otopilot düzenleyicisi: Runbook, zamanlama ayarları ve sonraki birkaç çalıştırmanın önizlemesi

Bir webhook'tan çalıştırma

Bir webhook tetikleyicisi ekledikten sonra Multica benzersiz bir URL üretir. Otopilotu tetiklemek için ona bir JSON nesnesi veya dizisi gönderin:

curl -X POST "$MULTICA_WEBHOOK_URL" \
  -H "Content-Type: application/json" \
  -H "Idempotency-Key: demo-001" \
  -d '{"event":"build.completed","eventPayload":{"status":"success"}}'

Yük, teslimat ve çalıştırma kayıtlarına kaydedilir ve agent'a verilir. İş oluştur modunda ayrıca iş açıklamasına eklenir.

Webhook istekleri üzerindeki kısıtlamalar:

  • gövde, 256 KiB'ye kadar geçerli bir JSON nesnesi veya dizisi olmalıdır;
  • Idempotency-Key, gönderen yeniden denediğinde yinelenen çalıştırmaları önler; GitHub teslimatları X-GitHub-Delivery ile de tekilleştirilir;
  • kararlı bir idempotency anahtarı olmadan, Multica tekrarlanan isteklerin yalnızca bir kez çalışacağını garanti edemez;
  • tetikleyici devre dışıysa veya olay eşleşmiyorsa, teslimat yok sayıldı olarak kaydedilir ve hiçbir çalıştırma oluşturulmaz.

Olayları filtreleme

Bir kaynak birden fazla olay türü gönderdiğinde, tetikleyiciye olay filtreleri ekleyin. Her satır bir olay adı ve isteğe bağlı bir eylemler listesi tutar; herhangi bir satır eşleşirse bir çalıştırma tetiklenir, tüm satırları boş bırakmak her olayı kabul eder.

Örneğin, olay adı olarak workflow_run ve eylemler olarak completed, failed ile yalnızca bu iki tür workflow_run sonucu kabul edilir. Multica, olayı ve eylemi GitHub'ın X-GitHub-Event başlığı ve gövdedeki action alanı dahil, yaygın istek başlıklarından ve yük alanlarından tanır.

Webhook URL'sini koruma

Webhook URL'sindeki token, çağıran kimlik bilgisidir. Tam URL'yi herkese açık depolara, işlere veya ekran görüntülerine koymayın. URL sızarsa, yanındaki URL'yi yenile düğmesine tıklayın ve göndereni hemen güncelleyin; eski URL hemen çalışmayı durdurur.

Tam URL'yi yalnızca Otopilotun oluşturucusu, çalışma alanı ownerları/adminleri ve erişim verilmiş işbirlikçiler görüntüleyebilir. Arayüz varsayılan olarak URL'deki token'ı gizler ve kopyalamak onu göstermeyi gerektirmez; tam adresi görüntülemek için URL'ye veya göz simgesine tıklayın.

Webhook yanıt referansı

Bir göndereni hata ayıklarken, Multica'nın yanıtlarını yorumlamak için bu tabloyu kullanın:

HTTP durumuYanıt durumuAnlamı
200acceptedKabul edildi ve bir çalıştırma oluşturuldu; teslimat ve çalıştırma ID'lerini döner.
200skippedKabul edildi, ama bu çalıştırma atlandı (örneğin yalnızca-çalıştır modunda runtime çevrimdışı); nedeni içerir.
200ignoredHiçbir çalıştırma oluşturulmadı: tetikleyici devre dışı, Otopilot duraklatılmış veya arşivlenmiş, ya da olay filtrelendi; reason alanı nedenini açıklar.
200duplicateIdempotency anahtarı mevcut bir teslimatla eşleşti; orijinal teslimat ID'sini döner ve tekrar çalışmaz.
400Hata mesajıGövde boş, geçerli JSON değil veya bir JSON nesnesi/dizisi değil.
401rejectedTetikleyicide bir imzalama sırrı yapılandırılmış, ama istekte imza eksik veya imza eşleşmiyor.
404Hata mesajıURL'deki token geçersiz veya yenilenmiş.
413Hata mesajıGövde 256 KiB'yi aşıyor.
429Hata mesajıÇok fazla istek; Retry-After yanıt başlığına göre daha sonra tekrar deneyin.
500Hata mesajıMultica iç hatası; gönderen daha sonra tekrar deneyebilir.

İş mantığı düzeyindeki yok saymalar — duraklatma, arşivleme ve olay filtreleme — 4xx yerine 200 döner, böylece gönderenler sonsuza kadar yeniden denemez.

Olay ve eylem çıkarım sırası:

  1. gövdede bir dize event alanı varsa doğrudan kullanılır;
  2. yoksa X-GitHub-Event istek başlığı, gövdenin action'ıyla birleştirilerek github.<event>.<action> olur;
  3. ardından X-Gitlab-Event istek başlığı;
  4. ardından X-Event-Type istek başlığı;
  5. ardından gövdenin event, type ve action alanları;
  6. hepsi eksikse, olay webhook.received olarak kaydedilir.

Çalıştırmaları ve teslimatları görüntüleme

Çalıştırma geçmişi; tetikleyici kaynağını, zamanı, durumu, bağlı işi veya çalıştırmayı ve bir başarısızlık ya da atlamanın nedenini gösterir. Webhook tetikleyicileri ayrıca ayrıştırılan olayı, yanıtı, tekilleştirme bilgisini ve başarısızlık nedenini içeren ayrı teslimat kayıtları tutar.

Tamamen işlenmiş bir webhook teslimatı, detay görünümünden yeniden oynatılabilir. Bir yeniden oynatma, orijinal kaydı yeniden yazmadan yeni bir teslimat ve çalıştırma oluşturur; imza doğrulaması başarısız olan veya hâlâ kuyrukta olan teslimatlar yeniden oynatılamaz ve yeniden oynatmalar tekilleştirmeye katılmaz.

Başarısızlıklar, duraklatma ve silme

Yalnızca-çalıştır modunda başarısız olan bir çalıştırma otomatik olarak yeniden denenmez; bir sonraki zamanlama yine de planlandığı gibi ateşlenir. İş oluştur modu normal iş çalıştırmaları üretir ve altyapı kaynaklı başarısızlıklar Çalıştırmalar'daki kurallara uyar.

Multica periyodik olarak son çalıştırmaların başarısız olmaya devam edip etmediğini kontrol eder: son 7 günde en az 50 tamamlanmış veya başarısız çalıştırma varsa ve başarısızlık oranı %90 ise, sistem Otopilotu duraklatır ve oluşturucusuna bildirir; nedeni düzeltin, ardından elle devam ettirin.

Elle duraklatmak zamanlamaları, webhook'ları ve Şimdi çalıştır'ı durdurur. Silme aslında arşivlemektir: gelecekteki tetikleyiciler durur, çalıştırma ve teslimat geçmişi korunur.

İzinler

  • Herhangi bir çalışma alanı üyesi Otopilot oluşturabilir;
  • oluşturucu ve çalışma alanı ownerları/adminleri düzenleyebilir, çalıştırabilir, silebilir ve tetikleyicileri yönetebilir;
  • oluşturucu ve ownerlar/adminler, yönetim erişimine işbirlikçi ekleyebilir;
  • işbirlikçiler düzenleyebilir, çalıştırabilir ve tetikleyicileri yönetebilir, ama başkalarına erişim veremez;
  • bir Otopilotu yönetebilmek, onun agent'ını çalıştırabilmeyi garanti etmez — agent Erişimi yine geçerlidir.

CLI'ı kullanma

multica autopilot get <autopilot-id> --output json
multica autopilot trigger <autopilot-id>
multica autopilot runs <autopilot-id>
multica autopilot trigger-rotate-url <autopilot-id> <trigger-id>

autopilot get, varsayılan olarak webhook_token, webhook_path ve webhook_url'i null yapar ve bunun yerine has_webhook_token ile webhook_token_hint döner. Yalnızca canlı kimlik bilgisine kasıtlı olarak ihtiyaç duyduğunuzda --show-secrets ekleyin; CLI, borulanmış JSON'un geçerli kalması için stderr'e bir uyarı yazdırır.

Tam parametreler için CLI'ı kullanma'ya bakın.

Sonraki adımlar