We need an own baseimage for CI because of required dependencies which need to be compiled.
Motivation:
Ubuntu 20.04 is marked for brownout by github which will disable the 20.04 runner at 01.04.2025. https://github.blog/changelog/2025-01-15-github-actions-ubuntu-20-runner-image-brownout-dates-and-other-breaking-changes/
Swift is required in version 5.8, last version which is compatible with llvm 15, which isn't available as prebuild package. But it is possible to build the toolchain from source.
Conan dependencies llvm / clang aren't in conancenter and without each run would need to compile them. Testing Conan Integration in CI #745
Using LTO with e.g. clang-19 on llvm-14 seems to fail, this is purely optional.
Dependency installation via InstallAptDependencies.sh can also be done in the baseimage.
Demand:
This is required in the near future to ensure stable compatibility with swift and conan, alternative is to just don't test these.
Whats the plan:
To have a CI job which builds an pushes a baseimage which is consumed by other jobs.
Naming suggestion: ..phasar:build-environment-250218-shortcommit
The job itself should only run if the dependency script or the Dockerfile itself changes.
Swift toolchain 5.8 is build and installed
optional: distcc can be used locally to speedup testing e.g. via RUN --mount
Conan dependencies are build and installed
Optional: LLVM 14 ist compiled with clang-19 to fix LTO issues
Existing job is consuming the image to test certain configurations.
Follow up:
Job is added to test the Conan build
This image should only be used in CI and to build phasar but the resulting Dockerfile should contain only installed files.
Therefore a multi stage build would be nice to slim the final image - only ubuntu + installed phasar in Release & LTO.
We need an own baseimage for CI because of required dependencies which need to be compiled.
Motivation:
Demand:
This is required in the near future to ensure stable compatibility with swift and conan, alternative is to just don't test these.
Whats the plan:
Follow up: