New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Integrate resultsdb with the backend #101
Comments
SIMPLICIO: In the DB, that set of testcases required for an udpate to pass? We should keep them associated with a particular update -- with the updates table. SALVIATI: Ah, but then our friend Sagredo the avid packager would have to re-enter his requirements every time he creates a new update. SIMPLICIO: Huh. Ok, then we should keep them associated with packages. When a new update is created for a certain package, all the testcases normally required for that package are required for the update. Multi-build updates require the union of their packages' required testcases. SALVIATI: But then every time Sagredo becomes the maintainer of a new package, he would have to specify the test cases for each new package. SIMPLICIO: Then we can keep the set of test cases required for an update associated with the packages' stack. Every new package added to the stack inherits all the required test cases. If a multi-build update is composed of packages from more than one stack, it inherits all the required test cases of all the stacks of all the packages of all the builds that make it up. SALVIATI: But then, what about all the packages that are not part of a stack? One-offs? SIMPLICIO: This is hard. SALVIATI: 🚲 |
Maybe a cascading system would be the most flexible:
This way, say the packager knows an update is truly exceptional, they can override all other requirements for that update so that it will get pushed. (Similarly, a site admin or releng group member could login and change the requirements on a stuck but important update if it needs to get through.) We could also have site requirements defined in config or something, to provide defaults to updates that have no others defined -- a baseline. This seems really flexible to me. Coding the check would be pretty straightforward, but it would require a good bit of UI work to let people tweak requirements at all these different levels (stack, package, and update). |
The cascading approach sounds sane to me. I wonder if we can just create a Mako function for the UI widget that can be re-used for stacks/packages/updates. |
This comes in two places I think:
We should check resultsdb for the update and have a list of resultsdb tasks that we keep in the database per update. If any of them are not PASSED or INFO, then the request should be denied and the user should be informed. For instance, we could not deny requests if
rpmlint
fails but we could deny requests ifdepcheck
fails.We need to keep the configurable list of required testcases per update so that we can handle the future where certain packages have automated test cases that no other packages have. Package X might want to require that their package-x-foobar testcase passes before anything goes to stable.
depcheck
by default and other future ones).If
depcheck
has not even been run yet, perhaps we should deny as well.For the check during the request-for-stable, we can just
For the check during mash time, it would need to do something more complicated like:
Do we stop the mash if the resultsdb is unavailable or giving 500s?
The text was updated successfully, but these errors were encountered: