Skip to content
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

Improve the CI time #1463

Open
tigercosmos opened this issue Jun 24, 2024 · 9 comments
Open

Improve the CI time #1463

tigercosmos opened this issue Jun 24, 2024 · 9 comments

Comments

@tigercosmos
Copy link
Collaborator

Currently, we have too many GitHub action items, which results in a long building and testing time.
We need to refactor the current CI files and make the CI faster.

@seladb
Copy link
Owner

seladb commented Jun 24, 2024

how can we improve it? Maybe we can list the action items so anyone can work on it

@tigercosmos tigercosmos changed the title Increase the CI time Improve the CI time Jun 24, 2024
@tigercosmos
Copy link
Collaborator Author

@seladb let's brainstorm some ideas to improve this. cc @Dimi1010 @egecetin @clementperon

@clementperon
Copy link
Collaborator

I didn't look at the pipeline but using a cache + ccache could avoid to rebuild some files.
Else limiting the number of OS and run a nightly pipeline with all the OS / configurations

@egecetin
Copy link
Collaborator

My suggestion is that if the cache is not enough, we can distribute the workflow to several providers to prevent reaching compute limits. For example,

  • Cirrus: only run doxy
  • Azure: only windows runners
  • Github: linux runners
  • and so on ...

It should make it harder to maintain a bit, but we can handle it if we have to

@tigercosmos
Copy link
Collaborator Author

@egecetin I think it could be the last step. The issue is the current CI script is not efficient enough. Just like that we need to improve the algorithm before trying to use multithread(?)

@egecetin
Copy link
Collaborator

@tigercosmos Yes of course. If possible, I agree we should improve the pipeline first. To be honest I did not check all workflows but most of the runs between 5-8 mins (approx 2-3 mins from build so it is like 30%-50% of run is build), right? So, I'm not sure we can dramatically improve CI runtime (even with caching) unless we limit the runner OS/version/config or improve parallelism. I think for "multiplatform" definition the code should be tested as much as possible. So, I don't know what we can do.

@egecetin
Copy link
Collaborator

egecetin commented Jun 24, 2024

Something that comes to my mind, testing consumes approx 1 minute. If I'm not mistaken current test suite does not support multithreading (@seladb correct me if I'm wrong pls). So maybe using a test library supporting multithreading might lead better testing times? (eg. integrating GoogleTest + ctest to run tests parallel to efficiently saturate CPU)

or maybe we can just remove "Check Installation" step which can halve the workflow time but not sure about this.

@tigercosmos
Copy link
Collaborator Author

@egecetin true, I think the parallelism of test cases may be the key. Probably we should focus on it in the next step.

@tigercosmos tigercosmos added the CI label Jun 24, 2024
@tigercosmos
Copy link
Collaborator Author

@seladb what do you think?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

4 participants