HomePhabricator

Allow external systems to send messages to build targets

Description

Allow external systems to send messages to build targets

Summary:
Ref T1049. Allows external systems to send a message to a build target. The primary intended use case is:

  • You make an HTTP request to Jenkins.
  • The build goes into a "waiting" state.
  • Later, Jenkins calls harbormaster.sendmessage to report that the target passed or failed.
  • The build continues as appropriate.

This is deceptively complicated because:

  • There are a lot of race concerns. We might get a message back from an external system before it even responds to the request we made. We want to make sure we process these messages no matter when we receive them.
  • These messages need to be sent to a build target (vs a build or buildable) because we'll get into trouble with parallelization later on otherwise (Jenkins is told to do 3 builds; we can't tell which ones failed or what overall state is unless the message are sent to targets).
  • I initially thought about implementing this as a separate "Wait for a response from an external system" build step. This gets a lot more complicated for users once we do parallelization, though. Particularly, in the case where you've told Jenkins to do 3 builds, the three "wait" steps need to know which target they're waiting for (and jenkins needs to know some unique identifier for each target). So this pretty much boils down to a more complicated, more error-prone version of using target PHIDs.

This makes the already-muddy Build UI a bit worse, but it needs a general clarity pass anyway (it's showing way too much uninteresting data, and should show a better summary of results instead).

Test Plan:

  • This doesn't really do anything interesting yet.
  • Used Conduit to send messages to build plans.
  • Viewed the messages on the build screen.

Reviewers: btrahan

Reviewed By: btrahan

Subscribers: epriestley

Maniphest Tasks: T1049

Differential Revision: https://secure.phabricator.com/D8604

Details

Provenance
epriestleyAuthored on
epriestleyPushed on Mar 25 2014, 11:11 PM
Reviewer
btrahan
Differential Revision
D8604: Allow external systems to send messages to build targets
Parents
rP25f91567a76b: Make various minor Harbormaster UI improvements
Branches
Unknown
Tags
Unknown
Tasks
T1049: Implement Harbormaster

Event Timeline