[libcxx] [llvm] [libc++] Move some macOS CI jobs to Github actions (PR #89083)

Louis Dionne via llvm-commits llvm-commits at lists.llvm.org
Thu Jul 25 10:05:50 PDT 2024


https://github.com/ldionne updated https://github.com/llvm/llvm-project/pull/89083

>From 6af03cb19200a3761a85f7faf4b53e5b083c4eff Mon Sep 17 00:00:00 2001
From: Louis Dionne <ldionne.2 at gmail.com>
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 | 184 ++-----------------
 libcxx/utils/ci/buildkite-pipeline.yml       | 184 +------------------
 2 files changed, 17 insertions(+), 351 deletions(-)

diff --git a/.github/workflows/libcxx-build-and-test.yaml b/.github/workflows/libcxx-build-and-test.yaml
index 1456f245cf7c0..ad56c7f78fb43 100644
--- a/.github/workflows/libcxx-build-and-test.yaml
+++ b/.github/workflows/libcxx-build-and-test.yaml
@@ -47,188 +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-system
         ]
-        cc: [  'clang-19' ]
-        cxx: [ 'clang++-19' ]
-        include:
-          - config: 'generic-gcc'
-            cc: 'gcc-14'
-            cxx: 'g++-14'
     steps:
       - uses: actions/checkout at 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 at 26f96dfa697d77e81fd5907df203aa23a56210a8 # v4.3.0
-        if: always()
+      - uses: maxim-lobanov/setup-xcode at 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 at 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 at 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 at 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-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 at v4
-      - name: ${{ matrix.config }}
-        run: libcxx/utils/ci/run-buildbot ${{ matrix.config }}
-        env:
-          CC: clang-19
-          CXX: clang++-19
-      - uses: actions/upload-artifact at 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 at 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 at 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 0a81268cbe7a1..a0a2a8bdbf9e6 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



More information about the llvm-commits mailing list