Ga naar inhoud

Pipeline-triggers instellen

Een trigger is wat een pipeline start. Elke trigger is een node op het canvas, gesleept uit de sectie Triggers van de node-bibliotheek. Selecteer je die node, dan opent rechts de inspector — er is geen altijd zichtbare triggerlijst, geen triggertabblad en geen triggerscherm.

  1. Ga naar Instellingen → Werkruimte → Pipelinesjablonen.
  2. Klik op het potlood in de rij van het sjabloon om de editor te openen.
  3. Selecteer een triggernode op het canvas. Rechts verschijnt het paneel met de instellingen van die trigger. Zonder selectie blijft het paneel verborgen.

De sectie Triggers van de node-bibliotheek toont elk starttype als een eigen node: handmatig, schema, webhook en één kaart per domeingebeurtenis. Zoek op merged, ticket of de typenaam (PrMerged) en sleep de kaart naar het canvas. Een nieuw sjabloon toont bij het ingangspunt ook een lege tegel Trigger toevoegen — kies uit dezelfde doorzoekbare lijst.

De trigger wordt direct ingevoegd. Nieuwe automatische triggers beginnen uitgeschakeld, zodat een drop geen run afvuurt voordat je hem hebt geconfigureerd. Gebruik de schakelaar Ingeschakeld in de inspector om hem aan te zetten, of het prullenbakpictogram om hem te verwijderen.

Sleep Handmatige uitvoering (of kies die uit de lege tegel) en zet Ingeschakeld aan in de inspector. Dat is wat het sjabloon in de runkiezer laat verschijnen. Het is geen speciaal geval — de schakelaar schrijft een gewone triggerrij waarvan het gebeurtenistype manual is. Die wordt direct bewaard; er valt niets op te slaan.

Dezelfde schakelaar zit achter Handmatige uitvoering in de kop van de editor, naast de gedeclareerde invoer van het sjabloon.

Deze gebeurtenissen starten een run:

Label in de kiezer Gebeurtenis
Externe PR geopend ExternalPrDetected
PR gepubliceerd PullRequestPublished
PR-status gewijzigd PullRequestStatusChanged
PR samengevoegd PrMerged
Bericht ontvangen MessageReceived
Ticket aangemaakt TicketCreated
Ticketstatus gewijzigd TicketStatusChanged
Ticket toegewezen TicketAssigned
Taak voltooid TicketCompleted
Taak mislukt TicketFailed
Taak geannuleerd TicketCancelled
Budgetdrempel overschreden BudgetThresholdCrossed
Repository toegevoegd RepoAdded
Vergaderopname gestopt MeetingRecordingStopped
Vaardigheid bijgewerkt SkillUpdated
Ruimte verwijderd SpaceDeleted

SpaceDeleted is waar de ingebouwde worktree-opruimpipeline op luistert: de gebeurtenis draagt het id van de verwijderde ruimte mee, zodat de run precies de worktrees van die ruimte opruimt in plaats van de hele werkruimte te doorlopen.

Zie de referentie domeingebeurtenissen voor de payloadsleutels die elke gebeurtenis meedraagt.

Selecteer de node PR-status gewijzigd. De statuschips in de inspector zijn het enige filter dat de UI kan maken. Tik op een van merged, closed, approved, opened, reopened; de trigger gaat dan alleen af wanneer de status van de gebeurtenis met een ervan overeenkomt. Laat je alle chips uitgeschakeld, dan is er geen filter.

Er is geen vrij invulbaar JSON-filterveld. Een filtersleutel die de payload van de gebeurtenis niet bevat, komt nooit overeen, dus maak er niet met de hand een op basis van een sleutel die je niet hebt bevestigd in de referentie domeingebeurtenissen.

Selecteer de node Schema om te bewerken wanneer die afgaat. De velden in de inspector worden bewaard zoals je ze achterlaat:

Veld Beschrijving
Planning (cron of every:seconden) Een cron-uitdrukking met vijf velden zoals 0 9 * * 1, of een interval zoals every:86400. Een kaal getal wordt omgezet naar every:<n>.
Tijdzone (optioneel) Een IANA-zone zoals Europe/Paris. Standaard UTC.
Bij gemiste uitvoeringen Wat te doen met afvuringen die zijn gemist terwijl de server uit stond: Eén keer uitvoeren voegt elk gemist moment samen tot één afvuring bij het herstarten (de standaard), Overslaan gaat verder bij het eerstvolgende moment in de toekomst.

De samenvattingsregel op de tegel in het canvas vermeldt het interval alleen voor de vorm every:<seconds>; een cron-uitdrukking verschijnt als alleen “Schema”.

Als je Webhook sleept, wordt een willekeurig token aangemaakt. Selecteer de node om het pad POST /webhooks/<token> uit de inspector te kopiëren.

Het token is ook het HMAC-geheim: het verzoek moet X-Hub-Signature-256: sha256=<hex> meedragen, waarbij de hex HMAC-SHA256(body, token) is. Een levering die de verificatie niet haalt, wordt geweigerd en gelogd en kan niet opnieuw worden afgespeeld. Duplicaten worden genegeerd op hun dedupe-sleutel.

Elke start is een eigen node in de graaf. Een draad vanaf Schema koppelt alleen Schema; Handmatige uitvoering kan een ander pad volgen (bijvoorbeeld een voorwaardennode) voordat die bij hetzelfde werk uitkomt. Een run gaat binnen bij de start die bij zijn gebeurtenistype hoort en slaat subgrafen over die bij de andere starts horen.

Een ingeschakelde trigger waarvan zowel het gebeurtenistype als het filter overeenkomt, start een run met de payload van de gebeurtenis als triggerpayload van de run — dat is waarop {{key}} in de prompt of het script van een stap wordt opgelost. Gebeurtenissen met een natuurlijke sleutel worden gededupliceerd, zodat dezelfde gebeurtenis die twee keer afgaat geen twee runs start.

Een uitgeschakeld sjabloon wordt geweigerd, ook als de trigger overeenkomt. Acht van de dertien ingebouwde sjablonen worden uitgeschakeld geleverd, dus hun gezaaide triggers vuren in het niets tot je het sjabloon aanzet.

  • Alleen het handmatige pad afschermen — leid Handmatige uitvoering door een voorwaardennode en Schema rechtstreeks naar het werk. Elke start bezit zijn eigen draden.
  • Elke nieuwe PR reviewen — gebeurtenis PR gepubliceerd op het sjabloon pr_review.
  • Opruimen na een merge — gebeurtenis PR-status gewijzigd, gefilterd op merged / closed / approved. Het ingebouwde sjabloon pr_merged_cleanup luistert al zo, plus ticket voltooid/geannuleerd, SpaceDeleted en een dagelijks schema dat bij elke herzaaiing geforceerd wordt ingeschakeld omdat het garbagecollection is.
  • Nachtelijke sweep — schema 0 2 * * * met een tijdzone, op een sjabloon waarvan de eerste node een bash-script is.
  • Reageren op een extern systeem — een webhooktrigger, waarbij het aanroepende systeem zijn requestbody ondertekent zoals hierboven.