-
Notifications
You must be signed in to change notification settings - Fork 16
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
Enable latest versions of compilers on main #73
Comments
Are you planning to shove all these into the CI? We can create a nightly CI job for this, what will the build parameters be? |
Well, I think we need to discuss. We have an action from our meetings (1-2 months ago) to define a matrix for environments. It's absolutely cool that we have existing matrix, which I understand it just run "default " version of gcc/clang, but we also need to make sure we have support on a wide range of compiler version, in my opinion, but it depends on execution time. What's the total execution time right now for a single version of gcc+clang+msvc? What it will be if we add 3 extra versions for each compiler? (They should run in parallel, so maybe not a big overhead after spawn.) Example latest 3-4 compiler version for gcc clang, msvc. CC: @steve-downey To be honest, I don't actually care about the number of jobs, I do care about the total execution time on CI. Related to the nightly job, in my opinion we would want to run something more often. @camio , do we pay a subscription for GitHub Actions? Do we pay extra if having multiple jobs? |
You can actually see the time spent for actions in this tab: link. Currently each job (one combination of the matrix, basically per compile command variant per C++ version per compiler) takes 29s to run, setup time is usually ~5s. I do want to point out that we do not have a lot to test in this test case, 29s could potentially be higher if the library consumer is developing complex library (longer compile time)/ library with timeout (longer testing time). Also we are going to test more platforms (macos, windows), this would dramatically increase the number of combinations. I think we are on free tier of GitHub so our max parallelization is 20 jobs, see: here. My point is, I don't think it will be reasonable to trigger another matrix of (per compiler version per c++ version potentially per compile option variant per platform) on each commit, maybe only trigger (on main branch + in pr) / nightly. Though realistically, it will probably take ~5-10 mins to run our current matrix + macos matrix + compiler matrix (assume one per version per compiler), this is definitely not horrible but not desirable as well. |
A real project takes about 10 min on CI, only |
Indeed, but let's keep a note this is a set of experimental libraries (which should become stable), which need to be tested on multiple platforms and compilers! It's not a production-like project, where you develop features for a product/platform etc and usually have a small set of platforms to support. This is actually about creating performant, portable, scalable C++ standard, which should be compliant at some point with an actual C++ Standard and should run with any environment. (TBD what that means - ofc, it's a finit set of environments, but a big/relevant one!) TLDR: I think all ideas are good, but we need to recheck/redefine our goals (e.g., maybe we decide that we MUST or MUST NOT use multiple compilers when running tests on main), and then see what's an optimal implementation for these goals. |
We're not currently on a paid plan. |
The CI shouldn't be a blocker for the normal dev cycle, so a few minutes doesn't seem unreasonable to run a full matrix periodically or on a PR. |
I will try to consider all mentioned ideas and to come up with a solution for bemanproject/beman#34 |
Yeah looking back, I don't think big matrix is not that big of problem after all, I just don't want to let developer wait 10min/30min/1hr for a commit to clear CI : ( . Worked with a project with a 1hr30min pipeline and I got PTSD. |
I have a project with a current pipeline of just under 3 days. I share your concern. |
I'm sure we can tweak the frequency. Agree, not want to take too many minutes. |
omg I feel sorry for you. |
Yeah, let's keep the CI test associated per commit
|
Hey @neatudarius since it looks like you've already added this feature in other repos, do you mind pushing a PR to exemplar first? I feel like that would help us evaluate the impact of this matrix a lot better. |
I think we have enough evidence that if it's not tested it doesn't work?
It looks to me that CI time is probably dominantly setting up the VM and
installing compilers. Running the tests after successfully compiling is
almost free.
If the costs of CI get prohibitive, like if we get above 5 minutes for
everything in parallel?, we should start considering trimming the matrix.
But evidence first, then work on a fix.
We probably don't need, for the packages we have, matrixing OS and
compilers. Like GCC versions on Windows. Although we might consider that
for something like networking, where the environment is probably
significant.
…On Tue, Nov 12, 2024, 06:58 Darius Neațu ***@***.***> wrote:
A real project takes about 10 min on *CI*, only 2 compiler, but with all
sanitizer! see https://github.com/beman-project/execution26/actions
Indeed, but let's keep a note this is a set of experimental libraries
(which should become stable), which need to be tested on multiple platforms
and compilers! It's not a production-like project, where you develop
features for a product/platform etc and usually have a small set of
platforms to support. This is actually about creating performant, portable,
scalable C++ standard, which should be compliant at some point with an
actual C++ Standard and should run with any environment. (TBD what that
means - ofc, it's a finit set of environments, but a big/relevant one!)
TLDR: I think all ideas are good, but we need to recheck/redefine our
goals (e.g., maybe we decide that we MUST or MUST NOT use multiple
compilers when running tests on main), and then see what's an optimal
implementation for these goals.
—
Reply to this email directly, view it on GitHub
<#73 (comment)>,
or unsubscribe
<https://github.com/notifications/unsubscribe-auth/AAVNZ5TIE4A7QEC7DPNGVBT2AHUOXAVCNFSM6AAAAABRSKCXYGVHI2DSMVQWIX3LMV43OSLTON2WKQ3PNVWWK3TUHMZDINZQGM2DEOJXGE>
.
You are receiving this because you were mentioned.Message ID:
***@***.***>
|
This does sound like a valid use case for custom action image. I am assuming main unit test is an independent CI set from this. Anyway we can try to set something up first and evaluate if we need to create docker image specifically for compiler check later. |
Enable latest versions of compilers on main
The text was updated successfully, but these errors were encountered: