I have ~30 self hosted runners and intend to scale up to ~100 and beyond in the next year or so.
These runners generally do the following
The linux runners have an always running container image which also runs the bb runner software. (So standard Linux shell runners)
Our bitbucket-pipelines.yml is ~6000 lines
1. Be able to select what runner a pipeline runs on in order to troubleshoot environmental problems, boards with worn out flash etc., without needing to make a branch that sets the runs on label to a single label
2. There is a desire to have an expensive protocol analyzer or two attached to some machines, have our 'standard' pipelines run on these machines, and have the pipelines start + stop a protocol trace if the protocol analyzer runner is assigned to the pipeline.
For number two, I suppose we can build detection of the analyzer into our test harness and automatically start and stop tracing.
However, we still need to be able to enable our devs to select what runner is assigned to a custom pipeline run.
We also could just duplicate all the relevant pipelines in our dynamic pipelines prover, append -`with-analyzer` to their names and adjust the runs-on labels; but we already have a very large list of pipelines to look through and this doesn't provide the ability to assign a particular runner to a pipeline.
Any thoughts on how to make this happen with dynamic pipelines?
I had thought of the approach you mentioned. I was hoping to avoid forcing the developer to create a new branch before running the custom pipeline.
I think to do this properly we would either need a change in the paradigm for specification and selection of run-on labels or, more on topic with this discussion group, multiple opportunities to modify pipeline yaml with the dynamic pipeline feature.
The current order of operations for configuration of custom pipelines (2&3 might be flipped)
Order of operations would need/desire
With each 'handler' being executed by an associated function of a single dynamic pipeline provider, according to the current one pipeline provider per repo approach.
Hi Edmund, did you manage to get the runner selection from variables input? I cannot find a way for Forge to "read" the BB variables after hitting the run pipeline button and therefore cannot assign a label to the step. The pipeline is generated after choosing the branch to run on rather than after.
So in your pseudo-code below, the invoke `postPipelineVariableSelectHandler` is not possible as far as I've found.