Przejdź do głównej zawartości

Skonfiguruj wyzwalacze potoków

Wyzwalacz to coś, co uruchamia potok. Każdy z nich jest węzłem na kanwie, upuszczanym z sekcji Wyzwalacze w bibliotece węzłów. Wybranie tego węzła otwiera po prawej stronie jego inspektora — nie ma stale widocznej listy wyzwalaczy, karty wyzwalaczy ani osobnego ekranu wyzwalaczy.

  1. Przejdź do Ustawienia → Obszar roboczy → Szablony potoków.
  2. Naciśnij ołówek w wierszu szablonu, aby otworzyć edytor.
  3. Wybierz węzeł wyzwalacza na kanwie. Po prawej pojawi się panel z ustawieniami tego wyzwalacza. Gdy nic nie jest wybrane, panel pozostaje ukryty.

Sekcja Wyzwalacze w bibliotece węzłów wymienia każdy rodzaj startu jako osobny węzeł: ręczny, harmonogram, webhook i po jednej karcie na zdarzenie domenowe. Wyszukaj merged, ticket lub nazwę typu (PrMerged) i przeciągnij kartę na kanwę. Nowy szablon pokazuje też kafelek zastępczy Dodaj wyzwalacz przy kotwicy wejściowej — wybierz pozycję z tej samej przeszukiwalnej listy.

Wyzwalacz zostaje wstawiony od razu. Nowe automatyczne wyzwalacze startują wyłączone, żeby upuszczenie nie odpaliło uruchomienia, zanim go skonfigurujesz. Użyj przełącznika Włączone w inspektorze, aby go włączyć, albo ikony kosza, aby go usunąć.

Upuść Uruchomienie ręczne (albo wybierz je z kafelka zastępczego) i włącz Włączone w jego inspektorze. To właśnie sprawia, że szablon pojawia się w selektorze uruchomień. Nie jest to żaden szczególny przypadek — przełącznik zapisuje zwykły wiersz wyzwalacza, którego typ zdarzenia to manual. Zmiana obowiązuje od razu; nie ma nic do zapisania.

Ten sam przełącznik stoi za Ręczne uruchamianie w nagłówku edytora, obok zadeklarowanych danych wejściowych szablonu.

Te zdarzenia rozpoczynają uruchomienie:

Etykieta selektora Zdarzenie
Otwarto zewnętrzny PR ExternalPrDetected
Opublikowano PR PullRequestPublished
Zmieniono status PR PullRequestStatusChanged
Scalono PR PrMerged
Otrzymano wiadomość MessageReceived
Utworzono zgłoszenie TicketCreated
Zmieniono status zgłoszenia TicketStatusChanged
Przypisano zgłoszenie TicketAssigned
Zgłoszenie ukończone TicketCompleted
Zgłoszenie nieudane TicketFailed
Zgłoszenie anulowane TicketCancelled
Przekroczono próg budżetu BudgetThresholdCrossed
Dodano repozytorium RepoAdded
Zatrzymano nagranie spotkania MeetingRecordingStopped
Zaktualizowano umiejętność SkillUpdated
Przestrzeń usunięta SpaceDeleted

SpaceDeleted to zdarzenie, na które nasłuchuje wbudowany potok czyszczenia worktree: niesie identyfikator usuniętej przestrzeni, więc uruchomienie odzyskuje dokładnie worktree tej przestrzeni, zamiast przeczesywać cały obszar roboczy.

Klucze ładunku, które niesie każde zdarzenie, znajdziesz w dokumentacji referencyjnej zdarzeń domenowych.

Wybierz węzeł Zmieniono status PR. Chipsy statusu w inspektorze to jedyny filtr, jaki potrafi utworzyć interfejs. Dotknij dowolnego z merged, closed, approved, opened, reopened; wyzwalacz odpala się tylko wówczas, gdy status zdarzenia pasuje do jednego z nich. Pozostawienie wszystkich chipów niewybranych oznacza brak filtra.

Nie ma swobodnego pola filtra JSON. Klucz filtra, którego ładunek zdarzenia nie niesie, nigdy nie pasuje, więc nie twórz go ręcznie dla klucza, którego nie potwierdziłeś w dokumentacji referencyjnej zdarzeń domenowych.

Wybierz węzeł Harmonogram, aby zmienić, kiedy się odpala. Pola inspektora zachowują się tak, jak je zostawisz:

Pole Opis
Harmonogram (cron lub every:seconds) Wyrażenie cron z pięcioma polami, takie jak 0 9 * * 1, albo interwał, taki jak every:86400. Sama liczba jest zamieniana na every:<n>.
Strefa czasowa (opcjonalnie) Strefa IANA, taka jak Europe/Paris. Domyślnie UTC.
Przy pominiętych uruchomieniach Co zrobić z odpaleniami pominiętymi, gdy serwer był wyłączony: Uruchom raz zwija każdy pominięty termin w jedno odpalenie po restarcie (domyślne), Pomiń wznawia od następnego przyszłego terminu.

Wiersz podsumowania kafelka na kanwie rozwija interwał tylko dla postaci every:<seconds>; wyrażenie cron wyświetla się po prostu jako „Harmonogram”.

Upuszczenie węzła Webhook tworzy losowy token. Wybierz ten węzeł, aby skopiować z inspektora ścieżkę POST /webhooks/<token>.

Token jest też sekretem HMAC: żądanie musi nieść X-Hub-Signature-256: sha256=<hex>, gdzie hex to HMAC-SHA256(body, token). Dostawa, która nie przejdzie weryfikacji, jest odrzucana i zapisywana w logu, a jej odtworzenie nie jest możliwe. Duplikaty są ignorowane po ich kluczu deduplikacji.

Każdy start to osobny węzeł grafu. Przewód poprowadzony od węzła Harmonogram podłącza tylko ten harmonogram; Uruchomienie ręczne może pójść inną drogą (na przykład przez węzeł warunku), zanim dołączy do tej samej pracy. Uruchomienie wchodzi przez start pasujący do jego typu zdarzenia i pomija podgrafy należące do pozostałych startów.

Włączony wyzwalacz, którego typ zdarzenia i filtr oba pasują, rozpoczyna uruchomienie z ładunkiem zdarzenia jako ładunkiem wyzwalacza uruchomienia — to względem niego rozwiązuje się {{key}} w prompcie lub skrypcie kroku. Zdarzenia niosące naturalny klucz są deduplikowane, więc to samo zdarzenie nie rozpoczyna dwóch uruchomień, gdy odpali się dwukrotnie.

Wyłączony szablon jest odrzucany, nawet gdy jego wyzwalacz pasuje. Osiem z trzynastu wbudowanych szablonów jest dostarczanych jako wyłączone, więc ich zasiane wyzwalacze odpalają w pustkę, dopóki nie włączysz szablonu.

  • Zabezpiecz tylko ścieżkę ręczną — poprowadź Uruchomienie ręczne przez węzeł warunku, a Harmonogram prosto do pracy. Każdy start ma własne przewody.
  • Recenzuj każdy nowy PR — zdarzenie Opublikowano PR w szablonie pr_review.
  • Posprzątaj po scaleniu — zdarzenie Zmieniono status PR, filtrowane do merged / closed / approved. Wbudowany szablon pr_merged_cleanup już tak nasłuchuje, a także Zgłoszenie ukończone i Zgłoszenie anulowane, SpaceDeleted oraz codzienny harmonogram, który jest wymuszany przy każdym ponownym zasianiu, bo pełni funkcję odśmiecania.
  • Nocny przegląd — harmonogram 0 2 * * * ze strefą czasową, w szablonie, którego pierwszym węzłem jest skrypt bash.
  • Reaguj na system zewnętrzny — wyzwalacz webhooka, przy którym wywołujący system podpisuje treść żądania jak wyżej.