Reject version conflicts earlier
If you're working in a Debusine repository, then you'll be starting a lot of debian_pipeline workflows with the suite parameter, indicating that the output should be published to that suite. If you're experimenting with changes you aren't quite sure of yet, then you might not remember to change the version number each time. The last step of the workflow will then fail, looking something like this:
I think it would be helpful for this to fail earlier, but there are a couple of possible ways to achieve that.
The simplest approach (similar to what both dak and Launchpad do) would be to just publish the source package and each build as soon as possible rather than waiting until the end of the pipeline, and block other steps on that. That would mean that we'd publish the source right at the start of the pipeline, and if that fails then we wouldn't do anything else. This would also have the advantage that if you're working with a combination of fast and slow architectures (either due to hardware capabilities or just because some workers have long task queues), then the output from the fast architectures will be published sooner rather than having to wait.
debian_pipeline works a little differently when it's uploading to a separate upload queue, because we want to check that all the builds work before we upload anything. I'm not convinced that we need to retain this mode when Debusine is handling the publishing; to my mind something like the transition dashboard we planned recently would be a better approach there. But if we do, then perhaps we could have something like a publish_eager parameter; if True, then it would publish things as soon as it can, and otherwise it would wait until all the builds are complete. This might be an evolution of the current upload_merge_uploads parameter, since if we aren't merging uploads then it arguably doesn't make sense to wait until all the builds are complete before uploading anything.
