Skip to content

Commit 840c023

Browse files
authored
[CI] Split build and test job parts for Ubuntu clang and macOS (#262)
1 parent ed588fc commit 840c023

File tree

1 file changed

+130
-70
lines changed

1 file changed

+130
-70
lines changed

.github/workflows/main.yml

Lines changed: 130 additions & 70 deletions
Original file line numberDiff line numberDiff line change
@@ -223,7 +223,7 @@ jobs:
223223
cmake -S . -B build
224224
-G Ninja -D USE_SEQ=ON -D USE_MPI=ON -D USE_OMP=ON -D USE_TBB=ON -D USE_STL=ON
225225
-D USE_FUNC_TESTS=ON -D USE_PERF_TESTS=ON
226-
-D CMAKE_BUILD_TYPE=RELEASE
226+
-D CMAKE_BUILD_TYPE=RELEASE -DCMAKE_INSTALL_PREFIX=install
227227
env:
228228
CC: clang-19
229229
CXX: clang++-19
@@ -233,6 +233,39 @@ jobs:
233233
env:
234234
CC: clang-19
235235
CXX: clang++-19
236+
- name: Install project
237+
run: |
238+
cmake --build build --target install
239+
- name: Archive installed package
240+
run: |
241+
tar -czvf ubuntu-clang-install.tar.gz -C install .
242+
- name: Upload installed package
243+
uses: actions/upload-artifact@v4
244+
with:
245+
name: ubuntu-clang-install
246+
path: ubuntu-clang-install.tar.gz
247+
ubuntu-clang-test:
248+
needs:
249+
- ubuntu-clang-build
250+
runs-on: ubuntu-latest
251+
steps:
252+
- uses: actions/checkout@v4
253+
- name: Setup environment
254+
run: |
255+
sudo add-apt-repository ppa:ubuntu-toolchain-r/test
256+
sudo apt-get update
257+
sudo apt-get install -y ninja-build mpich python3-pip valgrind
258+
wget https://apt.llvm.org/llvm.sh
259+
chmod u+x llvm.sh
260+
sudo ./llvm.sh 19 all
261+
- name: Download installed package
262+
uses: actions/download-artifact@v4
263+
with:
264+
name: ubuntu-clang-install
265+
- name: Extract installed package
266+
run: |
267+
mkdir -p install
268+
tar -xzvf ubuntu-clang-install.tar.gz -C install
236269
- name: Run func tests (MPI, num_proc=1)
237270
run: |
238271
source scripts/run_mpi.sh
@@ -273,14 +306,12 @@ jobs:
273306
run: source scripts/run_threads.sh
274307
env:
275308
OMP_NUM_THREADS: 4
276-
ubuntu-clang-build-extended:
309+
ubuntu-clang-test-extended:
277310
needs:
278-
- ubuntu-clang-build
311+
- ubuntu-clang-test
279312
runs-on: ubuntu-latest
280313
steps:
281314
- uses: actions/checkout@v4
282-
with:
283-
submodules: recursive
284315
- name: Setup environment
285316
run: |
286317
sudo add-apt-repository ppa:ubuntu-toolchain-r/test
@@ -289,27 +320,14 @@ jobs:
289320
wget https://apt.llvm.org/llvm.sh
290321
chmod u+x llvm.sh
291322
sudo ./llvm.sh 19 all
292-
- name: ccache
293-
uses: hendrikmuhs/ccache-action@v1.2
323+
- name: Download installed package
324+
uses: actions/download-artifact@v4
294325
with:
295-
key: ${{ runner.os }}-clang
296-
create-symlink: true
297-
max-size: 1G
298-
- name: CMake configure
299-
run: >
300-
cmake -S . -B build
301-
-G Ninja -D USE_SEQ=ON -D USE_MPI=ON -D USE_OMP=ON -D USE_TBB=ON -D USE_STL=ON
302-
-D USE_FUNC_TESTS=ON -D USE_PERF_TESTS=ON
303-
-D CMAKE_BUILD_TYPE=RELEASE
304-
env:
305-
CC: clang-19
306-
CXX: clang++-19
307-
- name: Build project
326+
name: ubuntu-clang-install
327+
- name: Extract installed package
308328
run: |
309-
cmake --build build --parallel
310-
env:
311-
CC: clang-19
312-
CXX: clang++-19
329+
mkdir -p install
330+
tar -xzvf ubuntu-clang-install.tar.gz -C install
313331
- name: Run tests (threads, num_threads=5)
314332
run: source scripts/run_threads.sh
315333
env:
@@ -371,6 +389,7 @@ jobs:
371389
-G Ninja -D USE_SEQ=ON -D USE_MPI=ON -D USE_OMP=ON -D USE_TBB=ON -D USE_STL=ON
372390
-D USE_FUNC_TESTS=ON -D USE_PERF_TESTS=ON
373391
-D CMAKE_BUILD_TYPE=RELEASE -D ENABLE_ADDRESS_SANITIZER=ON -D ENABLE_UB_SANITIZER=ON
392+
-DCMAKE_INSTALL_PREFIX=install
374393
env:
375394
CC: clang-19
376395
CXX: clang++-19
@@ -380,6 +399,39 @@ jobs:
380399
env:
381400
CC: clang-19
382401
CXX: clang++-19
402+
- name: Install project
403+
run: |
404+
cmake --build build --target install
405+
- name: Archive installed package
406+
run: |
407+
tar -czvf ubuntu-clang-sanitizer-install.tar.gz -C install .
408+
- name: Upload installed package
409+
uses: actions/upload-artifact@v4
410+
with:
411+
name: ubuntu-clang-sanitizer-install
412+
path: ubuntu-clang-sanitizer-install.tar.gz
413+
ubuntu-clang-sanitizer-test:
414+
needs:
415+
- ubuntu-clang-sanitizer-build
416+
runs-on: ubuntu-latest
417+
steps:
418+
- uses: actions/checkout@v4
419+
- name: Setup environment
420+
run: |
421+
sudo add-apt-repository ppa:ubuntu-toolchain-r/test
422+
sudo apt-get update
423+
sudo apt-get install -y ninja-build mpich python3-pip valgrind
424+
wget https://apt.llvm.org/llvm.sh
425+
chmod u+x llvm.sh
426+
sudo ./llvm.sh 19 all
427+
- name: Download installed package
428+
uses: actions/download-artifact@v4
429+
with:
430+
name: ubuntu-clang-sanitizer-install
431+
- name: Extract installed package
432+
run: |
433+
mkdir -p install
434+
tar -xzvf ubuntu-clang-sanitizer-install.tar.gz -C install
383435
- name: Run tests (MPI)
384436
run: |
385437
source scripts/run_mpi.sh "--oversubscribe"
@@ -417,44 +469,28 @@ jobs:
417469
ASAN_RUN: 1
418470
ASAN_OPTIONS: abort_on_error=1
419471
UBSAN_OPTIONS: halt_on_error=1
420-
ubuntu-clang-sanitizer-build-extended:
472+
ubuntu-clang-sanitizer-test-extended:
421473
needs:
422-
- ubuntu-clang-sanitizer-build
474+
- ubuntu-clang-sanitizer-test
423475
runs-on: ubuntu-latest
424476
steps:
425477
- uses: actions/checkout@v4
426-
with:
427-
submodules: recursive
428478
- name: Setup environment
429479
run: |
430480
sudo add-apt-repository ppa:ubuntu-toolchain-r/test
431481
sudo apt-get update
432-
sudo apt-get install -y ninja-build mpich libmpich* mpi* openmpi-bin python3-pip
482+
sudo apt-get install -y ninja-build mpich python3-pip valgrind
433483
wget https://apt.llvm.org/llvm.sh
434484
chmod u+x llvm.sh
435485
sudo ./llvm.sh 19 all
436-
- name: ccache
437-
uses: hendrikmuhs/ccache-action@v1.2
486+
- name: Download installed package
487+
uses: actions/download-artifact@v4
438488
with:
439-
key: ${{ runner.os }}-clang
440-
create-symlink: true
441-
max-size: 1G
442-
- name: CMake configure
443-
run: >
444-
cmake -S . -B build
445-
-D CMAKE_C_COMPILER_LAUNCHER=ccache -D CMAKE_CXX_COMPILER_LAUNCHER=ccache
446-
-G Ninja -D USE_SEQ=ON -D USE_MPI=ON -D USE_OMP=ON -D USE_TBB=ON -D USE_STL=ON
447-
-D USE_FUNC_TESTS=ON -D USE_PERF_TESTS=ON
448-
-D CMAKE_BUILD_TYPE=RELEASE -D ENABLE_ADDRESS_SANITIZER=ON -D ENABLE_UB_SANITIZER=ON
449-
env:
450-
CC: clang-19
451-
CXX: clang++-19
452-
- name: Build project
489+
name: ubuntu-clang-sanitizer-install
490+
- name: Extract installed package
453491
run: |
454-
cmake --build build --parallel
455-
env:
456-
CC: clang-19
457-
CXX: clang++-19
492+
mkdir -p install
493+
tar -xzvf ubuntu-clang-sanitizer-install.tar.gz -C install
458494
- name: Run tests (threads, num_threads=5)
459495
run: source scripts/run_threads.sh
460496
env:
@@ -525,9 +561,43 @@ jobs:
525561
-G Ninja -D USE_SEQ=ON -D USE_MPI=ON -D USE_OMP=ON -D USE_TBB=ON -D USE_STL=ON
526562
-DCMAKE_C_FLAGS="-I$(brew --prefix)/opt/libomp/include" -DCMAKE_CXX_FLAGS="-I$(brew --prefix)/opt/libomp/include"
527563
-D CMAKE_BUILD_TYPE=RELEASE -D USE_FUNC_TESTS=ON -D USE_PERF_TESTS=ON
564+
-DCMAKE_INSTALL_PREFIX=install
528565
- name: Build project
529566
run: |
530567
cmake --build build --parallel
568+
- name: Install project
569+
run: |
570+
cmake --build build --target install
571+
- name: Archive installed package
572+
run: |
573+
tar -czvf macos-clang-sanitizer-install.tar.gz -C install .
574+
- name: Upload installed package
575+
uses: actions/upload-artifact@v4
576+
with:
577+
name: macos-clang-sanitizer-install
578+
path: macos-clang-sanitizer-install.tar.gz
579+
macos-clang-test:
580+
needs:
581+
- macos-clang-build
582+
runs-on: macOS-latest
583+
steps:
584+
- uses: actions/checkout@v4
585+
- name: Setup environment
586+
run: |
587+
brew update-reset
588+
brew install ninja mpich llvm
589+
brew install libomp
590+
brew link libomp --overwrite --force
591+
brew install openssl
592+
brew link openssl --overwrite --force
593+
- name: Download installed package
594+
uses: actions/download-artifact@v4
595+
with:
596+
name: macos-clang-sanitizer-install
597+
- name: Extract installed package
598+
run: |
599+
mkdir -p install
600+
tar -xzvf macos-clang-sanitizer-install.tar.gz -C install
531601
- name: Run func tests (MPI, num_proc=1)
532602
run: |
533603
source scripts/run_mpi.sh
@@ -568,14 +638,12 @@ jobs:
568638
run: source scripts/run_threads.sh
569639
env:
570640
OMP_NUM_THREADS: 4
571-
macos-clang-build-extended:
641+
macos-clang-test-extended:
572642
needs:
573-
- macos-clang-build
643+
- macos-clang-test
574644
runs-on: macOS-latest
575645
steps:
576646
- uses: actions/checkout@v4
577-
with:
578-
submodules: recursive
579647
- name: Setup environment
580648
run: |
581649
brew update-reset
@@ -584,22 +652,14 @@ jobs:
584652
brew link libomp --overwrite --force
585653
brew install openssl
586654
brew link openssl --overwrite --force
587-
- name: ccache
588-
uses: hendrikmuhs/ccache-action@v1.2
655+
- name: Download installed package
656+
uses: actions/download-artifact@v4
589657
with:
590-
key: ${{ runner.os }}-clang
591-
create-symlink: true
592-
max-size: 1G
593-
- name: CMake configure
594-
run: >
595-
cmake -S . -B build
596-
-D CMAKE_C_COMPILER_LAUNCHER=ccache -D CMAKE_CXX_COMPILER_LAUNCHER=ccache
597-
-G Ninja -D USE_SEQ=ON -D USE_MPI=ON -D USE_OMP=ON -D USE_TBB=ON -D USE_STL=ON
598-
-DCMAKE_C_FLAGS="-I$(brew --prefix)/opt/libomp/include" -DCMAKE_CXX_FLAGS="-I$(brew --prefix)/opt/libomp/include"
599-
-D CMAKE_BUILD_TYPE=RELEASE -D USE_FUNC_TESTS=ON -D USE_PERF_TESTS=ON
600-
- name: Build project
658+
name: macos-clang-sanitizer-install
659+
- name: Extract installed package
601660
run: |
602-
cmake --build build --parallel
661+
mkdir -p install
662+
tar -xzvf macos-clang-sanitizer-install.tar.gz -C install
603663
- name: Run tests (threads, num_threads=5)
604664
run: source scripts/run_threads.sh
605665
env:
@@ -897,8 +957,8 @@ jobs:
897957
ubuntu-gcc-build-codecov:
898958
needs:
899959
- ubuntu-gcc-test-extended
900-
- ubuntu-clang-build-extended
901-
- macos-clang-build-extended
960+
- ubuntu-clang-test-extended
961+
- macos-clang-test-extended
902962
runs-on: ubuntu-latest
903963
steps:
904964
- uses: actions/checkout@v4
@@ -977,7 +1037,7 @@ jobs:
9771037
ubuntu-gcc-build-perf-stats:
9781038
needs:
9791039
- ubuntu-gcc-build-codecov
980-
- ubuntu-clang-sanitizer-build-extended
1040+
- ubuntu-clang-sanitizer-test-extended
9811041
- windows-clang-build-extended
9821042
- windows-msvc-build-extended
9831043
runs-on: ubuntu-latest

0 commit comments

Comments
 (0)