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

Own CI environment is required due to 20.04 brownout and outdated swift toolchain. #750

Open
jusito opened this issue Feb 18, 2025 · 0 comments

Comments

@jusito
Copy link
Member

jusito commented Feb 18, 2025

We need an own baseimage for CI because of required dependencies which need to be compiled.

Motivation:

  1. 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/
  2. 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.
  3. Conan dependencies llvm / clang aren't in conancenter and without each run would need to compile them. Testing Conan Integration in CI #745
  4. Using LTO with e.g. clang-19 on llvm-14 seems to fail, this is purely optional.
  5. 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:

  1. 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
  2. Existing job is consuming the image to test certain configurations.

Follow up:

  1. Job is added to test the Conan build
  2. 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.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant