From 25833118b953143de420f71a74c53da6b8f2e299 Mon Sep 17 00:00:00 2001 From: Arseniy Obolenskiy Date: Mon, 27 Jan 2025 16:58:18 +0100 Subject: [PATCH] [CI] Split build and test job parts for Ubuntu clang and macOS --- .github/workflows/main.yml | 200 ++++++++++++++++++++++++------------- 1 file changed, 130 insertions(+), 70 deletions(-) diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index 9db9d09b8..b585ca580 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -223,7 +223,7 @@ jobs: cmake -S . -B build -G Ninja -D USE_SEQ=ON -D USE_MPI=ON -D USE_OMP=ON -D USE_TBB=ON -D USE_STL=ON -D USE_FUNC_TESTS=ON -D USE_PERF_TESTS=ON - -D CMAKE_BUILD_TYPE=RELEASE + -D CMAKE_BUILD_TYPE=RELEASE -DCMAKE_INSTALL_PREFIX=install env: CC: clang-19 CXX: clang++-19 @@ -233,6 +233,39 @@ jobs: env: CC: clang-19 CXX: clang++-19 + - name: Install project + run: | + cmake --build build --target install + - name: Archive installed package + run: | + tar -czvf ubuntu-clang-install.tar.gz -C install . + - name: Upload installed package + uses: actions/upload-artifact@v4 + with: + name: ubuntu-clang-install + path: ubuntu-clang-install.tar.gz + ubuntu-clang-test: + needs: + - ubuntu-clang-build + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + - name: Setup environment + run: | + sudo add-apt-repository ppa:ubuntu-toolchain-r/test + sudo apt-get update + sudo apt-get install -y ninja-build mpich python3-pip valgrind + wget https://apt.llvm.org/llvm.sh + chmod u+x llvm.sh + sudo ./llvm.sh 19 all + - name: Download installed package + uses: actions/download-artifact@v4 + with: + name: ubuntu-clang-install + - name: Extract installed package + run: | + mkdir -p install + tar -xzvf ubuntu-clang-install.tar.gz -C install - name: Run func tests (MPI, num_proc=1) run: | source scripts/run_mpi.sh @@ -273,14 +306,12 @@ jobs: run: source scripts/run_threads.sh env: OMP_NUM_THREADS: 4 - ubuntu-clang-build-extended: + ubuntu-clang-test-extended: needs: - - ubuntu-clang-build + - ubuntu-clang-test runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - with: - submodules: recursive - name: Setup environment run: | sudo add-apt-repository ppa:ubuntu-toolchain-r/test @@ -289,27 +320,14 @@ jobs: wget https://apt.llvm.org/llvm.sh chmod u+x llvm.sh sudo ./llvm.sh 19 all - - name: ccache - uses: hendrikmuhs/ccache-action@v1.2 + - name: Download installed package + uses: actions/download-artifact@v4 with: - key: ${{ runner.os }}-clang - create-symlink: true - max-size: 1G - - name: CMake configure - run: > - cmake -S . -B build - -G Ninja -D USE_SEQ=ON -D USE_MPI=ON -D USE_OMP=ON -D USE_TBB=ON -D USE_STL=ON - -D USE_FUNC_TESTS=ON -D USE_PERF_TESTS=ON - -D CMAKE_BUILD_TYPE=RELEASE - env: - CC: clang-19 - CXX: clang++-19 - - name: Build project + name: ubuntu-clang-install + - name: Extract installed package run: | - cmake --build build --parallel - env: - CC: clang-19 - CXX: clang++-19 + mkdir -p install + tar -xzvf ubuntu-clang-install.tar.gz -C install - name: Run tests (threads, num_threads=5) run: source scripts/run_threads.sh env: @@ -371,6 +389,7 @@ jobs: -G Ninja -D USE_SEQ=ON -D USE_MPI=ON -D USE_OMP=ON -D USE_TBB=ON -D USE_STL=ON -D USE_FUNC_TESTS=ON -D USE_PERF_TESTS=ON -D CMAKE_BUILD_TYPE=RELEASE -D ENABLE_ADDRESS_SANITIZER=ON -D ENABLE_UB_SANITIZER=ON + -DCMAKE_INSTALL_PREFIX=install env: CC: clang-19 CXX: clang++-19 @@ -380,6 +399,39 @@ jobs: env: CC: clang-19 CXX: clang++-19 + - name: Install project + run: | + cmake --build build --target install + - name: Archive installed package + run: | + tar -czvf ubuntu-clang-sanitizer-install.tar.gz -C install . + - name: Upload installed package + uses: actions/upload-artifact@v4 + with: + name: ubuntu-clang-sanitizer-install + path: ubuntu-clang-sanitizer-install.tar.gz + ubuntu-clang-sanitizer-test: + needs: + - ubuntu-clang-sanitizer-build + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + - name: Setup environment + run: | + sudo add-apt-repository ppa:ubuntu-toolchain-r/test + sudo apt-get update + sudo apt-get install -y ninja-build mpich python3-pip valgrind + wget https://apt.llvm.org/llvm.sh + chmod u+x llvm.sh + sudo ./llvm.sh 19 all + - name: Download installed package + uses: actions/download-artifact@v4 + with: + name: ubuntu-clang-sanitizer-install + - name: Extract installed package + run: | + mkdir -p install + tar -xzvf ubuntu-clang-sanitizer-install.tar.gz -C install - name: Run tests (MPI) run: | source scripts/run_mpi.sh "--oversubscribe" @@ -417,44 +469,28 @@ jobs: ASAN_RUN: 1 ASAN_OPTIONS: abort_on_error=1 UBSAN_OPTIONS: halt_on_error=1 - ubuntu-clang-sanitizer-build-extended: + ubuntu-clang-sanitizer-test-extended: needs: - - ubuntu-clang-sanitizer-build + - ubuntu-clang-sanitizer-test runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - with: - submodules: recursive - name: Setup environment run: | sudo add-apt-repository ppa:ubuntu-toolchain-r/test sudo apt-get update - sudo apt-get install -y ninja-build mpich libmpich* mpi* openmpi-bin python3-pip + sudo apt-get install -y ninja-build mpich python3-pip valgrind wget https://apt.llvm.org/llvm.sh chmod u+x llvm.sh sudo ./llvm.sh 19 all - - name: ccache - uses: hendrikmuhs/ccache-action@v1.2 + - name: Download installed package + uses: actions/download-artifact@v4 with: - key: ${{ runner.os }}-clang - create-symlink: true - max-size: 1G - - name: CMake configure - run: > - cmake -S . -B build - -D CMAKE_C_COMPILER_LAUNCHER=ccache -D CMAKE_CXX_COMPILER_LAUNCHER=ccache - -G Ninja -D USE_SEQ=ON -D USE_MPI=ON -D USE_OMP=ON -D USE_TBB=ON -D USE_STL=ON - -D USE_FUNC_TESTS=ON -D USE_PERF_TESTS=ON - -D CMAKE_BUILD_TYPE=RELEASE -D ENABLE_ADDRESS_SANITIZER=ON -D ENABLE_UB_SANITIZER=ON - env: - CC: clang-19 - CXX: clang++-19 - - name: Build project + name: ubuntu-clang-sanitizer-install + - name: Extract installed package run: | - cmake --build build --parallel - env: - CC: clang-19 - CXX: clang++-19 + mkdir -p install + tar -xzvf ubuntu-clang-sanitizer-install.tar.gz -C install - name: Run tests (threads, num_threads=5) run: source scripts/run_threads.sh env: @@ -525,9 +561,43 @@ jobs: -G Ninja -D USE_SEQ=ON -D USE_MPI=ON -D USE_OMP=ON -D USE_TBB=ON -D USE_STL=ON -DCMAKE_C_FLAGS="-I$(brew --prefix)/opt/libomp/include" -DCMAKE_CXX_FLAGS="-I$(brew --prefix)/opt/libomp/include" -D CMAKE_BUILD_TYPE=RELEASE -D USE_FUNC_TESTS=ON -D USE_PERF_TESTS=ON + -DCMAKE_INSTALL_PREFIX=install - name: Build project run: | cmake --build build --parallel + - name: Install project + run: | + cmake --build build --target install + - name: Archive installed package + run: | + tar -czvf macos-clang-sanitizer-install.tar.gz -C install . + - name: Upload installed package + uses: actions/upload-artifact@v4 + with: + name: macos-clang-sanitizer-install + path: macos-clang-sanitizer-install.tar.gz + macos-clang-test: + needs: + - macos-clang-build + runs-on: macOS-latest + steps: + - uses: actions/checkout@v4 + - name: Setup environment + run: | + brew update-reset + brew install ninja mpich llvm + brew install libomp + brew link libomp --overwrite --force + brew install openssl + brew link openssl --overwrite --force + - name: Download installed package + uses: actions/download-artifact@v4 + with: + name: macos-clang-sanitizer-install + - name: Extract installed package + run: | + mkdir -p install + tar -xzvf macos-clang-sanitizer-install.tar.gz -C install - name: Run func tests (MPI, num_proc=1) run: | source scripts/run_mpi.sh @@ -568,14 +638,12 @@ jobs: run: source scripts/run_threads.sh env: OMP_NUM_THREADS: 4 - macos-clang-build-extended: + macos-clang-test-extended: needs: - - macos-clang-build + - macos-clang-test runs-on: macOS-latest steps: - uses: actions/checkout@v4 - with: - submodules: recursive - name: Setup environment run: | brew update-reset @@ -584,22 +652,14 @@ jobs: brew link libomp --overwrite --force brew install openssl brew link openssl --overwrite --force - - name: ccache - uses: hendrikmuhs/ccache-action@v1.2 + - name: Download installed package + uses: actions/download-artifact@v4 with: - key: ${{ runner.os }}-clang - create-symlink: true - max-size: 1G - - name: CMake configure - run: > - cmake -S . -B build - -D CMAKE_C_COMPILER_LAUNCHER=ccache -D CMAKE_CXX_COMPILER_LAUNCHER=ccache - -G Ninja -D USE_SEQ=ON -D USE_MPI=ON -D USE_OMP=ON -D USE_TBB=ON -D USE_STL=ON - -DCMAKE_C_FLAGS="-I$(brew --prefix)/opt/libomp/include" -DCMAKE_CXX_FLAGS="-I$(brew --prefix)/opt/libomp/include" - -D CMAKE_BUILD_TYPE=RELEASE -D USE_FUNC_TESTS=ON -D USE_PERF_TESTS=ON - - name: Build project + name: macos-clang-sanitizer-install + - name: Extract installed package run: | - cmake --build build --parallel + mkdir -p install + tar -xzvf macos-clang-sanitizer-install.tar.gz -C install - name: Run tests (threads, num_threads=5) run: source scripts/run_threads.sh env: @@ -897,8 +957,8 @@ jobs: ubuntu-gcc-build-codecov: needs: - ubuntu-gcc-test-extended - - ubuntu-clang-build-extended - - macos-clang-build-extended + - ubuntu-clang-test-extended + - macos-clang-test-extended runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 @@ -977,7 +1037,7 @@ jobs: ubuntu-gcc-build-perf-stats: needs: - ubuntu-gcc-build-codecov - - ubuntu-clang-sanitizer-build-extended + - ubuntu-clang-sanitizer-test-extended - windows-clang-build-extended - windows-msvc-build-extended runs-on: ubuntu-latest