This implements a Harbormaster build step which runs another build plan on the current buildable and waits for it to finish. It has the following semantics:
- If the buildable does not have a build with the specified build plan, it starts a build and waits for it to complete.
- If the buildable does have a build, but it's in a failed or error status, it restarts that build and waits for it to complete.
- If the buildable does have a build, but it's in a passed status, it returns immediately.
- If the buildable does have a build, but it's currently building or stopped, it waits for it to complete.
"complete" here means moving to either a pass or fail status.
This is primarily useful with D9806, where a build plan can run a bunch of other build plans in parallel and wait for them to complete. It also resolves T5542 by making it redundant. If you need a part of your build process to be restartable (without performing prior steps), you can split the top level build plan into other build plans, and it won't repeat the ones that have already passed (but you can still manually restart those build plans from the UI).