Skip to content

Commit 08d016d

Browse files
committed
[CI] Split build and test job parts for Ubuntu clang and macOS
1 parent ed588fc commit 08d016d

File tree

1 file changed

+124
-66
lines changed

1 file changed

+124
-66
lines changed

.github/workflows/main.yml

Lines changed: 124 additions & 66 deletions
Original file line numberDiff line numberDiff line change
@@ -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:
@@ -380,6 +398,39 @@ jobs:
380398
env:
381399
CC: clang-19
382400
CXX: clang++-19
401+
- name: Install project
402+
run: |
403+
cmake --build build --target install
404+
- name: Archive installed package
405+
run: |
406+
tar -czvf ubuntu-clang-sanitizer-install.tar.gz -C install .
407+
- name: Upload installed package
408+
uses: actions/upload-artifact@v4
409+
with:
410+
name: ubuntu-clang-sanitizer-install
411+
path: ubuntu-clang-sanitizer-install.tar.gz
412+
ubuntu-clang-sanitizer-test:
413+
needs:
414+
- ubuntu-clang-sanitizer-build
415+
runs-on: ubuntu-latest
416+
steps:
417+
- uses: actions/checkout@v4
418+
- name: Setup environment
419+
run: |
420+
sudo add-apt-repository ppa:ubuntu-toolchain-r/test
421+
sudo apt-get update
422+
sudo apt-get install -y ninja-build mpich python3-pip valgrind
423+
wget https://apt.llvm.org/llvm.sh
424+
chmod u+x llvm.sh
425+
sudo ./llvm.sh 19 all
426+
- name: Download installed package
427+
uses: actions/download-artifact@v4
428+
with:
429+
name: ubuntu-clang-sanitizer-install
430+
- name: Extract installed package
431+
run: |
432+
mkdir -p install
433+
tar -xzvf ubuntu-clang-sanitizer-install.tar.gz -C install
383434
- name: Run tests (MPI)
384435
run: |
385436
source scripts/run_mpi.sh "--oversubscribe"
@@ -417,44 +468,28 @@ jobs:
417468
ASAN_RUN: 1
418469
ASAN_OPTIONS: abort_on_error=1
419470
UBSAN_OPTIONS: halt_on_error=1
420-
ubuntu-clang-sanitizer-build-extended:
471+
ubuntu-clang-sanitizer-test-extended:
421472
needs:
422-
- ubuntu-clang-sanitizer-build
473+
- ubuntu-clang-sanitizer-test
423474
runs-on: ubuntu-latest
424475
steps:
425476
- uses: actions/checkout@v4
426-
with:
427-
submodules: recursive
428477
- name: Setup environment
429478
run: |
430479
sudo add-apt-repository ppa:ubuntu-toolchain-r/test
431480
sudo apt-get update
432-
sudo apt-get install -y ninja-build mpich libmpich* mpi* openmpi-bin python3-pip
481+
sudo apt-get install -y ninja-build mpich python3-pip valgrind
433482
wget https://apt.llvm.org/llvm.sh
434483
chmod u+x llvm.sh
435484
sudo ./llvm.sh 19 all
436-
- name: ccache
437-
uses: hendrikmuhs/ccache-action@v1.2
485+
- name: Download installed package
486+
uses: actions/download-artifact@v4
438487
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
488+
name: ubuntu-clang-sanitizer-install
489+
- name: Extract installed package
453490
run: |
454-
cmake --build build --parallel
455-
env:
456-
CC: clang-19
457-
CXX: clang++-19
491+
mkdir -p install
492+
tar -xzvf ubuntu-clang-sanitizer-install.tar.gz -C install
458493
- name: Run tests (threads, num_threads=5)
459494
run: source scripts/run_threads.sh
460495
env:
@@ -528,6 +563,39 @@ jobs:
528563
- name: Build project
529564
run: |
530565
cmake --build build --parallel
566+
- name: Install project
567+
run: |
568+
cmake --build build --target install
569+
- name: Archive installed package
570+
run: |
571+
tar -czvf macos-clang-sanitizer-install.tar.gz -C install .
572+
- name: Upload installed package
573+
uses: actions/upload-artifact@v4
574+
with:
575+
name: macos-clang-sanitizer-install
576+
path: macos-clang-sanitizer-install.tar.gz
577+
macos-clang-test:
578+
needs:
579+
- macos-clang-build
580+
runs-on: macOS-latest
581+
steps:
582+
- uses: actions/checkout@v4
583+
- name: Setup environment
584+
run: |
585+
brew update-reset
586+
brew install ninja mpich llvm
587+
brew install libomp
588+
brew link libomp --overwrite --force
589+
brew install openssl
590+
brew link openssl --overwrite --force
591+
- name: Download installed package
592+
uses: actions/download-artifact@v4
593+
with:
594+
name: macos-clang-sanitizer-install
595+
- name: Extract installed package
596+
run: |
597+
mkdir -p install
598+
tar -xzvf macos-clang-sanitizer-install.tar.gz -C install
531599
- name: Run func tests (MPI, num_proc=1)
532600
run: |
533601
source scripts/run_mpi.sh
@@ -568,14 +636,12 @@ jobs:
568636
run: source scripts/run_threads.sh
569637
env:
570638
OMP_NUM_THREADS: 4
571-
macos-clang-build-extended:
639+
macos-clang-test-extended:
572640
needs:
573-
- macos-clang-build
641+
- macos-clang-test
574642
runs-on: macOS-latest
575643
steps:
576644
- uses: actions/checkout@v4
577-
with:
578-
submodules: recursive
579645
- name: Setup environment
580646
run: |
581647
brew update-reset
@@ -584,22 +650,14 @@ jobs:
584650
brew link libomp --overwrite --force
585651
brew install openssl
586652
brew link openssl --overwrite --force
587-
- name: ccache
588-
uses: hendrikmuhs/ccache-action@v1.2
653+
- name: Download installed package
654+
uses: actions/download-artifact@v4
589655
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
656+
name: macos-clang-sanitizer-install
657+
- name: Extract installed package
601658
run: |
602-
cmake --build build --parallel
659+
mkdir -p install
660+
tar -xzvf macos-clang-sanitizer-install.tar.gz -C install
603661
- name: Run tests (threads, num_threads=5)
604662
run: source scripts/run_threads.sh
605663
env:

0 commit comments

Comments
 (0)