celeritas
celeritas copied to clipboard
Improve CI infrastructure
- ~~Dockerhub is getting rid of the free teams tier but maybe our images will stay live?~~ Apparently docker is no longer ending it
- Kokkos builds block the single HIP executor and each one of those seems to take 2–6 hours (@dalg24 ) whereas our pipelines take <10 minutes
- Jenkins/blueocean annoys the shit out of me with the number of clicks it takes to get to a broken test and how it autorefreshes in the background
- Our github pages website requires manual updating
Ideally we could:
- [ ] Auto-publish documentation (moved from https://github.com/celeritas-project/celeritas/issues/592)
- [ ] View results on CDash instead of jenkins/blue ocean
- [x] Use github actions for better github integration (#1020)
- [x] Not have to maintain our own machines for HIP and CUDA, nor to share a single machine with Kokkos
Resources:
- Dockerfile support for GitHub Actions
- Creating a Docker container action
- Apply for docker open source tier
- Building CI with CDash
TODO for Github CI:
- [ ] Fix the issues with examples
- [ ] asan build needs
-fsanitize=addressin downstream example - [ ] rocm+ndebug (static libs) fails to propagate the HIP library linkage
- [x] SimpleOffload::Build crashes because ~~MTLogger is called before run manager completes initialization~~ default run manager is "task" which returns zero threads on the first call
- [ ] VecGeom build on Ubuntu requires
-Wl,--no-as-neededwhich we provide to Celeritas viaCMAKE_{SHARED|EXE}_LINKER_FLAGS: maybe @pcanal 's RDC code needs to propagate these? Should this be vecgeom's responsibility?
- [ ] asan build needs
- [x] Use a shallow clone and
git describeor some better way of fetching tags - [ ] Improve docker images
- Add ccache to the build image and use it
- Avoid custom user ID; GitHub requires root
- Install all supported geant4 versions for a small build matrix
- Fix entry point so that we don't have to manually source
/etc/profileand re-export variables
- [ ] Add separate build matrix for geant4 versions (to test minimum and maximum supported)
- [x] Add ~~nightly~~ minimal build matrix for various compilers on raw hardware (earliest GCC through latest, multiple clang versions)
- [ ] Add automatic clang formatting and/or fix?
- [ ] Add documentation
- [ ] Only do a simple build for "draft" PRs
We are having issues with our AMD testing machines. We used to have 4 executors and we are down to 2 at the moment.
TODO:
- [ ] Use cmake action to tag errors/warnings in source code: run-cmake?
- [ ] Lint with clang-tidy? https://github.com/ZedThree/clang-tidy-review
- [ ] Clang format action: cpp linter action or just add git-clang-format manually
- [x] Windows runner: github hosted runners