buildbot / buildbot/buildbot

MultiTriggerStep

Open
#2,912 0 comments 0 reactions 0 assignees View on GitHub
feature triggering
Dominant language
Python
Stars
5.5k
Forks
1.7k
Avg merge
2d 7h
Merged PRs (30d)
6

Description

This ticket is a migrated Trac ticket [3159](http://trac.buildbot.net/ticket/3159)

People contributed to the original ticket: @tardyp
Ticket created on: `Jan 18 2015`
Ticket last modified on: `Jan 18 2015`

---

Based on discussion on https://github.com/buildbot/buildbot/pull/1468

New step: [[MultipleTrigger]]. We can start with clean API
Takes a list of [[TriggerArgs]], similar to [[ShellSequence]]

.. py:class:: [[MultipleTrigger]](triggers=[])

.. py:class:: [[TriggerArg]]( schedulerNames=[],
sourceStamps=None, update[[SourceStamp]]=None, always[[UseLatest]]=False,
wait[[ForFinish]]=False, flunk[[OnFailure]]=True, warn[[OnFailure]]=False,
set_properties={},
parent_relationship="triggered from")

Meaning of args is as defined in legacy Trigger step doc
flunk[[OnFailure]], warn[[OnFailure]] defines the final status of trigger step given result of buildrequest:
triggered[[BuildStatus]] ignored in case of wait[[ForFinished]]=False or flunk[[OnFailure]]==warn[[OnFailure]]==False
if flunk[[OnFailure]]=True: finalStatus = worst_status(finalStatus, triggered[[BuildStatus]])
elseif warn[[OnFailure]]=True: finalStatus = worst_status(finalStatus, WARNING if triggered[[BuildStatus]]!=SUCCESS else SUCCESS)

.. py:class:: [[MultipleTrigger]](triggers=[])

triggers argument is renderable, and arguments inside [[TriggerArgs]] are also renderable, so we can generate the list dynamically with rendereables.

However it is not always practical or maintainable to describe complex filtering using renderable. So a method can be overriden:

def getTriggers(self):
returns the list of [[TriggerArgs]] via deferred
return defer.succeed(self.triggers)

self is ref to the [[BuildStep]] can be used to access properties, previous builds status, parent builds, whatever is needed.

No other API should be needed for the Trigger usecases:
no [[PreExecute]]/PostExecute/OverrideResults => They encourage too much hacks

---

Contributor guide

Open the contributing guide

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.