From d38eb96c5372dd4dfac78b9fd46e1ece07438ae1 Mon Sep 17 00:00:00 2001 From: Louis Dionne Date: Thu, 25 Jul 2024 13:04:15 -0400 Subject: [PATCH] [libc++] Move some macOS CI jobs to Github actions This is an attempt to decouple macOS CI testing from BuildKite, which would make the maintenance of macOS CI easier and more accessible to all contributors. Right now, the macOS CI is running entirely on machines owned by the LLVM Foundation with only a small set of contributors having direct access to them. The story for performing back-deployment testing still needs to be figured out, so for now we are retaining some jobs under BuildKite. --- .github/workflows/libcxx-build-and-test.yaml | 185 ++----------------- libcxx/utils/ci/buildkite-pipeline.yml | 184 +----------------- 2 files changed, 17 insertions(+), 352 deletions(-) diff --git a/.github/workflows/libcxx-build-and-test.yaml b/.github/workflows/libcxx-build-and-test.yaml index 8c6d7c6c3c4dec..c20445eccaa6a7 100644 --- a/.github/workflows/libcxx-build-and-test.yaml +++ b/.github/workflows/libcxx-build-and-test.yaml @@ -47,189 +47,36 @@ env: jobs: - stage1: - if: github.repository_owner == 'llvm' - runs-on: libcxx-runners-8-set - continue-on-error: false + macos: + runs-on: macos-14 strategy: fail-fast: false matrix: config: [ - 'generic-cxx03', - 'generic-cxx26', - 'generic-modules' + generic-cxx03, + generic-cxx23, + generic-modules, + apple-configuration ] - cc: [ 'clang-19' ] - cxx: [ 'clang++-19' ] - include: - - config: 'generic-gcc' - cc: 'gcc-14' - cxx: 'g++-14' steps: - uses: actions/checkout@v4 - - name: ${{ matrix.config }}.${{ matrix.cxx }} - run: libcxx/utils/ci/run-buildbot ${{ matrix.config }} - env: - CC: ${{ matrix.cc }} - CXX: ${{ matrix.cxx }} - - uses: actions/upload-artifact@26f96dfa697d77e81fd5907df203aa23a56210a8 # v4.3.0 - if: always() + - uses: maxim-lobanov/setup-xcode@v1 with: - name: ${{ matrix.config }}-${{ matrix.cxx }}-results - path: | - **/test-results.xml - **/*.abilist - **/CMakeError.log - **/CMakeOutput.log - **/crash_diagnostics/* - stage2: - if: github.repository_owner == 'llvm' - runs-on: libcxx-runners-8-set - needs: [ stage1 ] - continue-on-error: false - strategy: - fail-fast: false - matrix: - config: [ - 'generic-cxx11', - 'generic-cxx14', - 'generic-cxx17', - 'generic-cxx20', - 'generic-cxx23' - ] - cc: [ 'clang-19' ] - cxx: [ 'clang++-19' ] - include: - - config: 'generic-gcc-cxx11' - cc: 'gcc-14' - cxx: 'g++-14' - - config: 'generic-cxx23' - cc: 'clang-17' - cxx: 'clang++-17' - - config: 'generic-cxx26' - cc: 'clang-18' - cxx: 'clang++-18' - steps: - - uses: actions/checkout@v4 - - name: ${{ matrix.config }} - run: libcxx/utils/ci/run-buildbot ${{ matrix.config }} - env: - CC: ${{ matrix.cc }} - CXX: ${{ matrix.cxx }} + xcode-version: 'latest-stable' + - uses: seanmiddleditch/gha-setup-ninja@master + - name: Build and test + run: | + python3 -m venv .venv + source .venv/bin/activate + python3 -m pip install psutil + bash libcxx/utils/ci/run-buildbot ${{ matrix.config }} - uses: actions/upload-artifact@26f96dfa697d77e81fd5907df203aa23a56210a8 # v4.3.0 if: always() # Upload artifacts even if the build or test suite fails with: - name: ${{ matrix.config }}-${{ matrix.cxx }}-results - path: | - **/test-results.xml - **/*.abilist - **/CMakeError.log - **/CMakeOutput.log - **/crash_diagnostics/* - stage3: - if: github.repository_owner == 'llvm' - needs: [ stage1, stage2 ] - continue-on-error: false - strategy: - fail-fast: false - max-parallel: 8 - matrix: - config: [ - 'generic-abi-unstable', - 'generic-hardening-mode-debug', - 'generic-hardening-mode-extensive', - 'generic-hardening-mode-fast', - 'generic-hardening-mode-fast-with-abi-breaks', - 'generic-merged', - 'generic-modules-lsv', - 'generic-no-exceptions', - 'generic-no-experimental', - 'generic-no-filesystem', - 'generic-no-localization', - 'generic-no-terminal', - 'generic-no-random_device', - 'generic-no-threads', - 'generic-no-tzdb', - 'generic-no-unicode', - 'generic-no-wide-characters', - 'generic-no-rtti', - 'generic-optimized-speed', - 'generic-static', - # TODO Find a better place for the benchmark and bootstrapping builds to live. They're either very expensive - # or don't provide much value since the benchmark run results are too noise on the bots. - 'benchmarks', - 'bootstrapping-build' - ] - machine: [ 'libcxx-runners-8-set' ] - include: - - config: 'generic-cxx26' - machine: libcxx-runners-8-set - - config: 'generic-asan' - machine: libcxx-runners-8-set - - config: 'generic-tsan' - machine: libcxx-runners-8-set - - config: 'generic-ubsan' - machine: libcxx-runners-8-set - # Use a larger machine for MSAN to avoid timeout and memory allocation issues. - - config: 'generic-msan' - machine: libcxx-runners-8-set - runs-on: ${{ matrix.machine }} - steps: - - uses: actions/checkout@v4 - - name: ${{ matrix.config }} - run: libcxx/utils/ci/run-buildbot ${{ matrix.config }} - env: - CC: clang-19 - CXX: clang++-19 - - uses: actions/upload-artifact@26f96dfa697d77e81fd5907df203aa23a56210a8 # v4.3.0 - if: always() - with: - name: ${{ matrix.config }}-results + name: macos-${{ matrix.config }}-results path: | **/test-results.xml **/*.abilist **/CMakeError.log **/CMakeOutput.log **/crash_diagnostics/* - windows: - runs-on: windows-2022 - needs: [ stage1 ] - strategy: - fail-fast: false - matrix: - include: - - { config: clang-cl-dll, mingw: false } - - { config: clang-cl-static, mingw: false } - - { config: clang-cl-no-vcruntime, mingw: false } - - { config: clang-cl-debug, mingw: false } - - { config: clang-cl-static-crt, mingw: false } - - { config: mingw-dll, mingw: true } - - { config: mingw-static, mingw: true } - - { config: mingw-dll-i686, mingw: true } - steps: - - uses: actions/checkout@v4 - - name: Install dependencies - run: | - choco install -y ninja - pip install psutil - - name: Install a current LLVM - if: ${{ matrix.mingw != true }} - run: | - choco install -y llvm --version=18.1.6 --allow-downgrade - - name: Install llvm-mingw - if: ${{ matrix.mingw == true }} - run: | - curl -LO https://github.com/mstorsjo/llvm-mingw/releases/download/20240606/llvm-mingw-20240606-ucrt-x86_64.zip - powershell Expand-Archive llvm-mingw*.zip -DestinationPath . - del llvm-mingw*.zip - mv llvm-mingw* c:\llvm-mingw - echo "c:\llvm-mingw\bin" | Out-File -FilePath $Env:GITHUB_PATH -Encoding utf8 -Append - - name: Add Git Bash to the path - run: | - echo "c:\Program Files\Git\usr\bin" | Out-File -FilePath $Env:GITHUB_PATH -Encoding utf8 -Append - - name: Set up the MSVC dev environment - if: ${{ matrix.mingw != true }} - uses: ilammy/msvc-dev-cmd@v1 - - name: Build and test - run: | - bash libcxx/utils/ci/run-buildbot ${{ matrix.config }} diff --git a/libcxx/utils/ci/buildkite-pipeline.yml b/libcxx/utils/ci/buildkite-pipeline.yml index 0a81268cbe7a16..a0a2a8bdbf9e6b 100644 --- a/libcxx/utils/ci/buildkite-pipeline.yml +++ b/libcxx/utils/ci/buildkite-pipeline.yml @@ -37,47 +37,8 @@ definitions: - "**/crash_diagnostics/*" steps: -- group: ':mac: Apple' +- group: ':mac: Apple Backdeployment' steps: - - label: MacOS x86_64 - command: libcxx/utils/ci/run-buildbot generic-cxx23 - agents: - queue: libcxx-builders - os: macos - arch: x86_64 - <<: *common - - - label: MacOS arm64 - command: libcxx/utils/ci/run-buildbot generic-cxx23 - agents: - queue: libcxx-builders - os: macos - arch: arm64 - <<: *common - - - label: MacOS with Modules - command: libcxx/utils/ci/run-buildbot generic-modules - agents: - queue: libcxx-builders - os: macos - <<: *common - - - label: MacOS with C++03 - command: libcxx/utils/ci/run-buildbot generic-cxx03 - agents: - queue: libcxx-builders - os: macos - <<: *common - - # Build with the configuration we use to generate libc++.dylib on Apple platforms - - label: Apple system configuration - command: libcxx/utils/ci/run-buildbot apple-configuration - agents: - queue: libcxx-builders - os: macos - arch: arm64 # This can technically run on any architecture, but we have more resources on arm64 so we pin this job to arm64 - <<: *common - - label: Apple back-deployment macosx10.13 command: libcxx/utils/ci/run-buildbot apple-system-backdeployment-10.13 agents: @@ -85,146 +46,3 @@ steps: os: macos arch: x86_64 # We need to use x86_64 for back-deployment CI on this target since macOS didn't support arm64 back then <<: *common - - - label: Apple back-deployment macosx10.15 - command: libcxx/utils/ci/run-buildbot apple-system-backdeployment-10.15 - agents: - queue: libcxx-builders - os: macos - arch: x86_64 # We need to use x86_64 for back-deployment CI on this target since macOS didn't support arm64 back then - <<: *common - - - label: Apple back-deployment with hardening enabled - command: libcxx/utils/ci/run-buildbot apple-system-backdeployment-hardened-11.0 - agents: - queue: libcxx-builders - os: macos - arch: x86_64 # TODO: Remove this once we are able to run back-deployment on arm64 again, since this isn't x86_64 specific - <<: *common - -- group: ARM - steps: - - label: AArch64 - command: libcxx/utils/ci/run-buildbot aarch64 - agents: - queue: libcxx-builders-linaro-arm - arch: aarch64 - <<: *common - - - label: AArch64 -fno-exceptions - command: libcxx/utils/ci/run-buildbot aarch64-no-exceptions - agents: - queue: libcxx-builders-linaro-arm - arch: aarch64 - <<: *common - - - label: Armv8 - command: libcxx/utils/ci/run-buildbot armv8 - agents: - queue: libcxx-builders-linaro-arm - arch: armv8l - <<: *common - - - label: Armv8 -fno-exceptions - command: libcxx/utils/ci/run-buildbot armv8-no-exceptions - agents: - queue: libcxx-builders-linaro-arm - arch: armv8l - <<: *common - - - label: Armv7 - command: libcxx/utils/ci/run-buildbot armv7 - agents: - queue: libcxx-builders-linaro-arm - arch: armv8l - <<: *common - - - label: Armv7 -fno-exceptions - command: libcxx/utils/ci/run-buildbot armv7-no-exceptions - agents: - queue: libcxx-builders-linaro-arm - arch: armv8l - <<: *common - - - label: Armv7-M picolibc - command: libcxx/utils/ci/run-buildbot armv7m-picolibc - agents: - queue: libcxx-builders-linaro-arm - arch: aarch64 - <<: *common - - - label: Armv7-M picolibc -fno-exceptions - command: libcxx/utils/ci/run-buildbot armv7m-picolibc-no-exceptions - agents: - queue: libcxx-builders-linaro-arm - arch: aarch64 - <<: *common - -- group: AIX - steps: - - label: AIX (32-bit) - command: libcxx/utils/ci/run-buildbot aix - env: - CC: clang - CXX: clang++ - OBJECT_MODE: '32' - agents: - queue: libcxx-builders - os: aix - <<: *common - - - label: AIX (64-bit) - command: libcxx/utils/ci/run-buildbot aix - env: - CC: clang - CXX: clang++ - OBJECT_MODE: '64' - agents: - queue: libcxx-builders - os: aix - <<: *common - -- group: ':freebsd: FreeBSD' - steps: - - label: FreeBSD 13 amd64 - command: libcxx/utils/ci/run-buildbot generic-cxx26 - env: - CC: clang17 - CXX: clang++17 - agents: - queue: libcxx-builders - os: freebsd - <<: *common - -- group: ':android: Android' - steps: - - label: Android 5.0, x86 NDK - command: libcxx/utils/ci/run-buildbot android-ndk-21-def-x86 - agents: - queue: libcxx-builders - os: android - <<: *common - - - label: Android 13, x86_64 NDK - command: libcxx/utils/ci/run-buildbot android-ndk-33-goog-x86_64 - agents: - queue: libcxx-builders - os: android - <<: *common - - - # TODO: Re-enable this once we've figured out how to run back-deployment testing on arm64 on recent OSes - # - label: "Apple back-deployment macosx11.0 arm64" - # command: "libcxx/utils/ci/run-buildbot apple-system-backdeployment-11.0" - # artifact_paths: - # - "**/test-results.xml" - # - "**/*.abilist" - # agents: - # queue: "libcxx-builders" - # os: "macos" - # arch: "arm64" - # retry: - # automatic: - # - exit_status: -1 # Agent was lost - # limit: 2 - # timeout_in_minutes: 120