-
Notifications
You must be signed in to change notification settings - Fork 2
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
👷🐧🍎🏁 Extensive CI testing #60
base: main
Are you sure you want to change the base?
Conversation
Signed-off-by: burgholzer <[email protected]>
Signed-off-by: burgholzer <[email protected]>
@burgholzer I think this can prove a valuable addition to the workflow package. Particularly with respect to our recent discussions on a CI unification across @cda-tum. |
Good point. The build matrix just scales extremely quickly. Given how most of our packages support all currently non-EOL Python versions, the current setup with this PR as it is results in:
on the Python side and
on the C++ side. In total that means at least Each of these runs has to build the C++ part of a project. The Python runs have to additionally install all Python dependencies. Then, all of these runs have to run the respective tests. Setting all the above aside for a moment, we could go one step further in the sense that we could also run on different compilers for each operating system (similar to how fiction handles this). I could imagine it would make sense to test at least
Technically, this applies to both the Python and the C++ builds. So even with the above, it would amount to another factor of 2x in the number of runs. |
I see that this setup quickly grows beyond reason. Naturally, there might not be an immediate end-all-be-all solution to a complex topic like this one. Let me try to list some thoughts on the matter anyway (in no particular order):
I'm always open to discussing this situation further. |
Thanks for your thoughts! 🙏🏼 I'll just add mine in a similar fashion. I agree that one particular compiler version should be sufficient per platform and compiler. I am still a bit on the fence when it comes to caching. First of all, from experience, it is rather opaque and at times hard to judge whether the compiler caches really work the way they are intended to work. Especially on the Python side, it can be quite hard to get that to work properly on all operating systems. Additionally, these caches have to be restored and saved in each run, which also takes quite some time because this has to go through the network. Given how some of the caches are more than a couple of hundred megabytes large, this definitely takes non-zero time. In general, there is a conflict of interest that we will probably never be able to resolve: What could really make a lot of sense is to allow more customization of the individual workflows so that it can be configured on-demand which jobs to run (either automatically based on files that changed, like we already to it at the moment) or via explicit opt-outs (meaning someone would modify the CI.yml in their PR to only enable certain checks they want to run). Self-hosted runners would really go a long way. Especially macOS ones. |
Signed-off-by: burgholzer <[email protected]>
Signed-off-by: burgholzer <[email protected]>
Signed-off-by: burgholzer <[email protected]>
Added inputs for specifying runner images, compilers, and configurations across Ubuntu, macOS, and Windows workflows. Simplified matrix generation with dynamic configuration, allowing more flexibility in build environments and testing setups. Signed-off-by: burgholzer <[email protected]>
The workflow is now expected to be called separately like the `reusable-cpp-linter` workflow. Signed-off-by: burgholzer <[email protected]>
Signed-off-by: burgholzer <[email protected]>
This PR experiments with broadening the type of runners that we run CI on. Due to the amount of runs that this creates, I am rather hesitant to directly merge this. Hence, I will keep this open for now and keep the branch itself. This way, we can test the real-world consequences of this and decide then.
In detail, this PR extends CI to run on: