-
Notifications
You must be signed in to change notification settings - Fork 21
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
Pipeline refactoring proposal #512
Comments
From a high high level perspective that makes sense. When interacting with kernel test ecosystem, I can see the following needs:
And maybe some of these pipeline steps may eventually become a service on it own. |
Having a description of the expected inputs and outputs of GitlabCI would be a good start. If there's a well-defined interface then we can check right away if this proposal fits the problem or if we need to adapt the pipeline further. I'll ask Helen about it.
Yes, the current "trigger" stage is very simple and does only one thing, it's by no means a generic trigger.
From this and the previous point I gather you mean that all test definitions could adhere to a common schema for all CI systems to follow and that the KernelCI pipeline could be used to interoperate with other CI systems? (launching tests for other systems, getting result callbacks from tests launched by others). This sounds like an honorable initiative but almost utopian viability-wise. That doesn't mean we shouldn't push for it, though.
They should be. The only reason they aren't right now is because they're tightly coupled to each other and they're ready to deal only with intra-KernelCI requests. But if we opened their interface properly they will be essentially independent services talking between each other and with external clients using the API as the communication channel. |
While thinking of ways of making KernelCI more flexible for future requirements, I identified some design elements as the sources of the hardships we've been finding so far during development and as potential flexibility limitations:
I think this pipeline design was probably done as a first sketch and then we've been stacking patches on top of it, but I think the KernelCI API design is meant to be used in a different way by the pipeline and other clients. As it often happens during rushed designs, once we got a hammer we started using it for hammering nails, but also for screws and to punch in holes in the walls, instead of finding ways to get us a screwdriver and a drill as well.
So this is a proposal for change to overcome these limitations and make KernelCI both easier to develop on and easier to adapt to future use cases.
Current test flow
As I understand it, the current flow for running a test looks something like this (the numbers in parentheses show the event order):
Proposal
run
(this is free to do afaik) we can use it to kickstart processes in individual stages selectively from any source. This event may contain all the necessary data to describe the event and for the target stage to perform the task.An example scenario would look like this (note: this isn't a sequence diagram, the order of API interactions between components doesn't matter):
So, the current test flow could still work just the same, the sequence would be:
run
event addressed to it. Then it does its usual tasks, submits the checkout node and notifies the "tarball" stage by sending arun
event.run
event addressed to it, it does the usual tasks and submits the node updaterun
event.run
events.Additionally, this decoupling of functionalities allows other use cases that we can't do at the moment:
The text was updated successfully, but these errors were encountered: