"Finish Testing a Build" (aka Un-Obsolete) and "Retest entire build"
We have two requirements which are shared by both release management and QA - and I believe the implementation is linked, hence treating this as a single issue
These are for the following use cases
"Finish Testing a Build" - openQA currently only considers the latest build as relevant, but this is simply not true. For example Rel Mgrs may check in a very dangerous/dubious package as part of Build #1, and then checkin something far less important for Builds #2, #3, and #4 all quickly after each other. In this case, openQA will obsolete testing for builds #1-3, and only test build #4 properly. But because Build#1 contained the risky change, we NEED openQA to be able to be able to 'unobsolete' a build and complete it's testing of that important build, which would then give us a meaningful point of comparision between Build #1 and #4
"Retest entire Build" - There's times, however rare, that either due to hardware, OBS, or other issues, that an entire set of results can be invalidated and the best option is to reschedule everything. This can be done by the CLI or by lots of clicking on the WebUI, but a single button to trigger a retest of an entire build would be nicer
I actually envision this as two new buttons on the build results screen
For each Arch (I think it makes sense to split this up based on arch) I believe we should have two buttons 'Unobsolete' and 'Reschedule everything'
A horrifically crude mock-up - http://i.imgur.com/D35i43I.png - the Ghostbusters icon is for 'Unobsoleting' and the restart icon is our usual one
Clicking on the Ghostbusters icon would reschedule any obsolete jobs for that arch on that build
Clicking on the restart icon would reschedule all jobs for that arch on that build
#3 Updated by coolo over 4 years ago
but how often is it done? once or twice every couple of weeks. how often do you see that button? every freaking day on every freaking job group.
And scripts don't need shell access - just as not everyong using osc rebuildpac requires shell access on OBS. Adam maintains a nice pair of python bindings
#7 Updated by oholecek over 4 years ago
- % Done changed from 0 to 50
Rescheduling of iso is done in issue#2776
The 'unobsoleting' thing seems to me can already be done by providing
_NOOBSOLETEBUILD variable when scheduling new iso (apparently this has been already implemented). Technically this does does not do 'unobsoleting' rather it does not cancel running/scheduled tests of old iso when scheduling new one. What do you think?
#8 Updated by okurz about 4 years ago
Can't we simply disable the "obsoleting old builds" again and instead deprioritize them? It is also helpful for reviewers if the build they review is not obsoleted "under their hands" and keeping a steady history for scenarios.
- don't obsolete old jobs
- on new iso: if jobs for old build are in state scheduled, set priority-10
#11 Updated by okurz about 4 years ago
rbrown and coolo do not want to disable the old build obsoletion e.g. to reduce worker load and more regarding some use cases of RMs. However, he agrees that for reproduction purposes it would make sense not to abort the according job runs (we don't know how this could be done). Preferred would be to reproduce not on the productive instance but then we have the problem of how to make workers available for multiple parties (see #12194).
Also, we had the idea to tier tests more and do a prerequisite job in our "test pipeline", e.g. check if ISO is bootable and finish successfully and start all other jobs after that mini-test_suite.
#13 Updated by okurz about 4 years ago
So "finish testing a build" is considered to be complete with #11072, regarding "retest entire build", can someone post the easy CLI approach here? Is there really a GUI way necessary? If yes, how should it look like so that coolo is also ok with that (see #9760#note-3)? Maybe instruct it with an API call from some OBS dashboard?
#16 Updated by okurz about 4 years ago
- Status changed from In Progress to Resolved
seems like the "retest entire build" is not really needed often or we didn't need it for a long time. In most if not all cases we need to selectively retrigger jobs because there are probably always some jobs which work in every case. As the subtask is also done we can close this.