Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

WIP: Expand CI Configs #142

Merged
Merged
Changes from all commits
Commits
Show all changes
22 commits
Select commit Hold shift + click to select a range
71fd23d
Run ci tests on pull requests.
insertinterestingnamehere Oct 19, 2023
da2c14e
Timeout for gh actions ci builds to enable catching hung tests.
insertinterestingnamehere Oct 19, 2023
902e522
Enable parallel builds in CI.
insertinterestingnamehere Oct 19, 2023
5f69607
Pin the ubuntu version for CI.
insertinterestingnamehere Oct 19, 2023
98d6e22
Expand matrix to test across recent gcc versions.
insertinterestingnamehere Oct 19, 2023
1c9c2a7
Switch to checkout v3 to clear warnings about using an old node version.
insertinterestingnamehere Oct 19, 2023
0cc1a9f
Add builds with recent clang versions.
insertinterestingnamehere Oct 19, 2023
26bf4b5
Don't let a failed build prevent others from running.
insertinterestingnamehere Oct 19, 2023
b6c66c3
Add sanitizer builds.
insertinterestingnamehere Oct 20, 2023
f52de83
Remove outdated comment.
insertinterestingnamehere Oct 20, 2023
3aaf720
In CI, only install hwloc if it's needed.
insertinterestingnamehere Oct 20, 2023
c18efd0
Use the correct C++ compiler for the sanitizer builds.
insertinterestingnamehere Oct 23, 2023
5191afa
Install and use C++ compiler for testing too.
insertinterestingnamehere Oct 24, 2023
2ddffc9
Add build with additional checks (e.g. asserts) that run only with th…
insertinterestingnamehere Oct 24, 2023
8529650
Increase allowed time for clang on linux builds and sanitizer builds.
insertinterestingnamehere Oct 24, 2023
8d18045
Only test libc++ on latest clang since its a fairly unusual config an…
insertinterestingnamehere Oct 25, 2023
c2a6ce8
Expand osx CI tests to include different schedulers, assertion, and o…
insertinterestingnamehere Oct 26, 2023
6b56291
Turn off testing at different optimization levels since it's not filt…
insertinterestingnamehere Oct 26, 2023
6d1f1fe
Disable testing with Linux/libc++ since the effect of switching betwe…
insertinterestingnamehere Oct 26, 2023
ada5b8a
Disable running the expensive asserts in CI since that setting makes …
insertinterestingnamehere Oct 26, 2023
96e9466
Also test distrib scheduler.
insertinterestingnamehere Oct 31, 2023
9f3b554
Add stricter timeout enforcement for cases where a test stops respond…
insertinterestingnamehere Oct 31, 2023
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
186 changes: 169 additions & 17 deletions .github/workflows/CI.yml
Original file line number Diff line number Diff line change
Expand Up @@ -4,46 +4,198 @@ on:
push:
branches: [ main ]
pull_request:
branches: [ main ]

jobs:
linux_make_check:
runs-on: ubuntu-latest
linux-gcc:
runs-on: ubuntu-22.04
continue-on-error: true
strategy:
matrix:
scheduler: [nemesis, sherwood]
gcc_version: [9, 10, 11, 12, 13]
scheduler: [nemesis, sherwood, distrib]
topology: [hwloc, binders, no]
env:
CC: gcc-${{ matrix.gcc_version }}
CXX: g++-${{ matrix.gcc_version }}
steps:
- uses: actions/checkout@v2
- name: install hwloc
- uses: actions/checkout@v3
- if: ${{ matrix.gcc_version == '13' }}
run: sudo apt-add-repository 'ppa:ubuntu-toolchain-r/test' && break || sleep 1
- name: install compiler
run: sudo apt-get install gcc-${{ matrix.gcc_version }} g++-${{ matrix.gcc_version }}
- if: ${{ matrix.topology != 'no' }}
run: |
sudo apt-get install hwloc libhwloc-dev
hwloc-ls --version
- name: build qthreads
run: |
./autogen.sh
./configure --enable-picky --with-scheduler=${{ matrix.scheduler }} --with-topology=${{ matrix.topology }}
make
make -j2
- name: make check
run: timeout -k 10s --foreground 3m make check
timeout-minutes: 4

linux-clang:
runs-on: ubuntu-22.04
continue-on-error: true
strategy:
matrix:
clang_version: [11, 12, 13, 14, 15, 16, 17]
scheduler: [nemesis, sherwood, distrib]
topology: [hwloc, binders, no]
include:
- clang_version: 11
gcc_version: 10
- clang_version: 12
gcc_version: 11
- clang_version: 13
gcc_version: 11
- clang_version: 14
gcc_version: 11
- clang_version: 15
gcc_version: 12
- clang_version: 16
gcc_version: 13
- clang_version: 17
gcc_version: 13
env:
CC: clang-${{ matrix.clang_version }}
CXX: clang++${{ matrix.clang_version }}
steps:
- uses: actions/checkout@v3
- if: ${{ matrix.clang_version == '16' || matrix.clang_version == 17 }}
run: |
make check
wget -O - https://apt.llvm.org/llvm-snapshot.gpg.key | sudo apt-key add - && break || sleep 1
sudo apt-add-repository 'deb https://apt.llvm.org/jammy/ llvm-toolchain-jammy-${{ matrix.clang_version }} main' && break || sleep 1
- if: ${{ matrix.gcc_version == '13' && ! matrix.use_libcxx }}
run: sudo apt-add-repository 'ppa:ubuntu-toolchain-r/test' && break || sleep 1
- name: install gcc
run: sudo apt-get install gcc-${{ matrix.gcc_version }} g++-${{ matrix.gcc_version }}
- name: install clang
run: sudo apt-get install clang-${{ matrix.clang_version }}
- if: ${{ matrix.topology != 'no' }}
run: |
sudo apt-get install hwloc libhwloc-dev
hwloc-ls --version
- name: build qthreads
run: |
./autogen.sh
./configure --enable-picky --with-scheduler=${{ matrix.scheduler }} --with-topology=${{ matrix.topology }}
make -j2
- name: make check
run: timeout -k 10s --foreground 6m make check
timeout-minutes: 7

mac_build:
mac:
runs-on: macos-latest
continue-on-error: true
strategy:
matrix:
scheduler: [nemesis, sherwood, distrib]
topology: [hwloc, binders, no]
use_asserts: [true, false]
env:
QTHREADS_ENABLE_ASSERTS: ${{ matrix.use_asserts && '--enable-asserts' || '' }}
steps:
- uses: actions/checkout@v2
- uses: actions/checkout@v3
- name: install deps
run: |
brew install autoconf automake libtool
- name: install hwloc
brew install autoconf automake libtool coreutils # coreutils is to get gtimeout for CI and is not universally required by qthreads.
- if: ${{ matrix.topology != 'no' }}
run: |
brew install hwloc
hwloc-ls --version
- name: build qthreads
run: |
./autogen.sh
./configure --enable-picky
make
## Currently hangs on OSX -- https://github.com/Qthreads/qthreads/issues/59
# - name: make check
# run: |
# make check
./configure $QTHREADS_ENABLE_ASSERTS --enable-picky --with-scheduler=${{ matrix.scheduler }} --with-topology=${{ matrix.topology }}
make -j3
- name: make check
run: gtimeout -k 10s --foreground 8m make check
timeout-minutes: 9

sanitizers:
runs-on: ubuntu-22.04
continue-on-error: true
strategy:
matrix:
sanitizer: [address, memory, thread, undefined]
scheduler: [nemesis, sherwood, distrib]
topology: [hwloc, binders, no]
use_libcxx: [false] # disable testing on libcxx since its effect seems very limited for now.
env:
CC: clang-17
CXX: clang++-17
CFLAGS: "-fsanitize=${{ matrix.sanitizer }}"
CXXFLAGS: ${{ matrix.use_libcxx && format('-stdlib=libc++ -fsanitize={0}', matrix.sanitizer) || format('-fsanitize={0}', matrix.sanitizer) }}
LDFLAGS: "-fsanitize=${{ matrix.sanitizer }}"
steps:
- uses: actions/checkout@v3
- if: ${{ ! matrix.use_libcxx }}
run: |
sudo apt-add-repository 'ppa:ubuntu-toolchain-r/test' && break || sleep 1
sudo apt-get install gcc-13 g++-13
- name: install compiler
run: |
wget -O - https://apt.llvm.org/llvm-snapshot.gpg.key | sudo apt-key add - && break || sleep 1
sudo apt-add-repository 'deb https://apt.llvm.org/jammy/ llvm-toolchain-jammy-17 main' && break || sleep 1
sudo apt-get install clang-17
- if: ${{ matrix.use_libcxx }}
run: sudo apt-get install libc++-17-dev libc++abi-17-dev
- if: ${{ matrix.topology != 'no' }}
run: |
sudo apt-get install hwloc libhwloc-dev
hwloc-ls --version
- name: build qthreads
run: |
./autogen.sh
./configure --enable-picky --with-scheduler=${{ matrix.scheduler }} --with-topology=${{ matrix.topology }}
make -j2
- name: make check
run: timeout -k 10s --foreground 8m make check
timeout-minutes: 9

linux-thorough:
runs-on: ubuntu-22.04
continue-on-error: true
strategy:
matrix:
compiler: [gcc, clang]
scheduler: [nemesis, sherwood, distrib]
topology: [hwloc, binders, no]
use_libcxx: [false] # disable testing on libcxx since its effect seems very limited for now.
use_asserts: [true, false]
exclude:
- compiler: gcc
use_libcxx: true
env:
CC: ${{ matrix.compiler == 'gcc' && 'gcc-13' || 'clang-17' }}
CXX: ${{ matrix.compiler == 'gcc' && 'g++-13' || 'clang++-17' }}
CXXFLAGS: ${{ matrix.use_libcxx && '-stdlib=libc++' || '' }}
QTHREADS_ENABLE_ASSERTS: ${{ matrix.use_asserts && '--enable-asserts' || '' }}
steps:
- uses: actions/checkout@v3
- run: |
sudo apt-add-repository 'ppa:ubuntu-toolchain-r/test' && break || sleep 1
sudo apt-get install gcc-13 g++-13
- if: ${{ matrix.compiler == 'clang' }}
run: |
wget -O - https://apt.llvm.org/llvm-snapshot.gpg.key | sudo apt-key add - && break || sleep 1
sudo apt-add-repository 'deb https://apt.llvm.org/jammy/ llvm-toolchain-jammy-17 main' && break || sleep 1
sudo apt-get install clang-17
- if: ${{ matrix.use_libcxx }}
run: sudo apt-get install libc++-17-dev libc++abi-17-dev
- if: ${{ matrix.topology != 'no' }}
run: |
sudo apt-get install hwloc libhwloc-dev
hwloc-ls --version
- name: build qthreads
run: |
./autogen.sh
./configure $QTHREADS_ENABLE_ASSERTS --enable-picky --with-scheduler=${{ matrix.scheduler }} --with-topology=${{ matrix.topology }}
make -j2
- name: make check
run: timeout -k 10s --foreground 6m make check
timeout-minutes: 7
Loading