Skip to content

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

@jusito

Description

@jusito

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.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions