-
Notifications
You must be signed in to change notification settings - Fork 128
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
Ci rework gcc builds #3631
Ci rework gcc builds #3631
Conversation
fe48235
to
16fcd4d
Compare
bdfaebf
to
0a7569a
Compare
@vicentebolea The two failing tests on ubuntu/gcc10/mpich seem to have failed on master recently as well. There is also 1 configure warning on each of the four intel builds. I think it's because those images are using the latest nightly version of cmake, which is warning about kwsys having too old of a minimum cmake version requirement. Other than those issues, this is probably ready for you to review. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Review from the skies, I will review the rest tomorrow, running out of battery in the fly.
83a86cc
to
aa1ad76
Compare
@vicentebolea Since a lot of the work that went into this PR was exploratory at first, the commit history is far from clean. I'm not sure it's worth the effort to try to break it up into logical chunks now, but I could easily collapse it into a single commit if you want. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Great job Scott, only cosmetic changes requested here. Sorry for me taking this long to review this PR, the reason is due to the size of changes and me being distracted with the AHM this week. Let me know
@@ -28,6 +35,7 @@ MPIEXEC_EXTRA_FLAGS:STRING=--allow-run-as-root --oversubscribe | |||
MPIEXEC_MAX_NUMPROCS:STRING=${N2CPUS} | |||
") | |||
|
|||
set(CTEST_CMAKE_GENERATOR "Ninja") | |||
set(CTEST_TEST_ARGS PARALLEL_LEVEL 1) | |||
set(CTEST_CMAKE_GENERATOR "Unix Makefiles") |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Same as above
We also are missing the clang6 build but we can provide it in a later PR |
Its up to you, but due to the large amount of changes you might as well make a single commit and be done with it |
You mentioned you tried using the slave approach and it worked for you:
Here's what I see:
Let me know if it's obvious to you what I'm doing wrong here, but I just copy-pasted what you said worked for you. |
Yeah ok, once you're happy with the changes (and everything is still working), I'll squash to a single commit and push one last time. |
5b4dc07 adds a |
I see, it appears that g++ is at the same time another master alternative in this E4s image, thus update-alternatives is declining the instruction. In vanilla ubuntu20.04 is possible but not in this image, we tried but it is all right is not super important. Lets move on with this |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Looks great, before squashing everything into a single commit add a commit with the changes for source/adios2/engine/bp5/BP5Reader.cpp
.
@@ -28,6 +35,7 @@ MPIEXEC_EXTRA_FLAGS:STRING=--allow-run-as-root --oversubscribe | |||
MPIEXEC_MAX_NUMPROCS:STRING=${N2CPUS} | |||
") | |||
|
|||
set(CTEST_TEST_ARGS PARALLEL_LEVEL 1) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
same
Should I separate out the change to |
Yep |
5b4dc07
to
ec825fe
Compare
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
The two failing test for mpich are not related to this PR.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
followup from previous review; everything else good; lets try ghcr instead of docker.
7b7e8b1
to
e911aa7
Compare
@vicentebolea Do you want to take one last look before merging? I think I've addressed everything we discussed. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Lookgs good small last detail
scripts/ci/images-v2/build-ubuntu.sh
Outdated
docker build --rm --build-arg CLANG_VERSION=6.0 -f ./Dockerfile.ci-spack-ubuntu20.04-clang -t adios2:ci-spack-ubuntu20.04-clang6 . | ||
docker build --rm --build-arg CLANG_VERSION=10 -f ./Dockerfile.ci-spack-ubuntu20.04-clang -t adios2:ci-spack-ubuntu20.04-clang10 . | ||
|
||
# Tag test images for pushing (TODO: change organization before merge) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
# Tag test images for pushing (TODO: change organization before merge) |
No need as we will use GHCR
e911aa7
to
fa274a9
Compare
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Ready to merge; If you cant merge let me know.
Good job there :)
Thanks @vicentebolea! It seems that I cannot merge, but I don't think it's about permissions, as it seems I could push the "Enable auto-merge" button to "Automatically merge when all requirements are met". Is it possible the failing |
fa274a9
to
74c5b9d
Compare
@scottwittenburg yeah, I have also rebase it, lets merge it after passing CI |
This PR reworks how docker images are built for gcc, clang, and intel builds done in github actions. To dramatically reduce build times for the gcc builds, the plan going forward is to use pre-built Docker images from the E4S project (see "Minimal Images", described here) as a base image. These images come with some spack packages already installed, but more importantly, installing ADIOS2 dependencies using the spack shipped in those images results in most dependencies getting installed from a release-specific E4S buildcache. This is far faster than building those dependencies from sources.
For intel builds run in el8, since no buildcache is available to install ADIOS2 dependencies for that OS, the dependencies that can be installed from the package manager are installed, and options for missing dependencies are just turned off.
After this PR is merged, there are only two shell scripts used to build, tag, and push all the images used in gcc and intel builds on github actions. To build gcc images (currently including gcc8, gcc9, gcc10, gcc11, and clang10), simply run
scripts/ci/images-v2/build-ubuntu.sh
. On a fairly old linux machine with 32 hyperthreads, but with slow spinning disks, and with no caching, this now takes around 30 minutes. To build, tag, and push images for icc and oneapi testing, runscripts/ci/images-v2/build-el8.sh
. This takes around 20 minutes, under the same conditions mentioned above.This PR also renders some of the existing dockerfiles, scripts, cmake files, etc unused, and thus removes them from the repo.
fixes: #3611
fixes: #3612
fixes: #3613
fixes: #3614