Page MenuHomePhabricator

On Harbormaster build plans, show which Herald rules trigger builds
ClosedPublic

Authored by epriestley on Mar 7 2019, 2:22 PM.

Details

Summary

Ref T13258. Provide an easy way to find rules which trigger a particular build plan from the build plan page.

The implementation here ends up a little messy: we can't just search for actionType = 'build' AND targetPHID = '<build plan PHID>' since the field is a blob of JSON.

Instead, make rules indexable and write a "build plan is affected by rule actions" edge when indexing rules, then search on that edge.

For now, only "Run Build Plan: ..." rules actually write this edge, since I think (?) that it doesn't really have meaningful values for other edge types today. Maybe "Call Webhooks", and you could get a link from a hook to rules that trigger it? Reasonable to do in the future.

Things end up a little bit rough overall, but I think this panel is pretty useful to add to the Build Plan page.

This index needs to be rebuilt with bin/search index --type HeraldRule. I'll call this out in the changelog but I'm not planning to explicitly migrate or add an activity, since this is only really important for larger installs and they probably (?) read the changelog. As rules are edited over time, this will converge to the right behavior even if you don't rebuild the index.

Test Plan

Diff Detail

Repository
rP Phabricator
Lint
Automatic diff as part of commit; lint not applicable.
Unit
Automatic diff as part of commit; unit tests not applicable.

Event Timeline

epriestley created this revision.Mar 7 2019, 2:22 PM
Owners added a subscriber: Restricted Owners Package.Mar 7 2019, 2:22 PM
epriestley requested review of this revision.Mar 7 2019, 2:24 PM
epriestley updated this revision to Diff 48353.Mar 7 2019, 3:23 PM
  • Minor fixes for null/empty behaviors.
amckinley accepted this revision.Mar 7 2019, 9:47 PM
amckinley added inline comments.
src/applications/harbormaster/herald/HarbormasterRunBuildPlansHeraldAction.php
96

Should this be wrapped in an array?

And also, why does the HeraldActionRecord typehint get highlighted differently here than the typehint in HeraldAction.php?

src/applications/herald/edge/HeraldRuleActionAffectsObjectEdgeType.php
7

Nice.

Also, just out of curiosity, is there a script or something for coming up with the next unallocated EDGECONST?

This revision is now accepted and ready to land.Mar 7 2019, 9:47 PM
This revision was automatically updated to reflect the committed changes.
epriestley added inline comments.Mar 7 2019, 9:53 PM
src/applications/harbormaster/herald/HarbormasterRunBuildPlansHeraldAction.php
96

For this rule type, the target is already a list (since you can have a rule run more than one build plan).

Colorization difference is an xhpast binary difference on some secure hosts, I think.

src/applications/herald/edge/HeraldRuleActionAffectsObjectEdgeType.php
7

Not really -- ConfigModulesEdge Types, then add 1.