Skip to content

Commit

Permalink
Merge pull request #142 from insertinterestingnamehere/ci
Browse files Browse the repository at this point in the history
WIP: Expand CI Configs
  • Loading branch information
insertinterestingnamehere authored Oct 31, 2023
2 parents 43d9052 + 9f3b554 commit f040053
Showing 1 changed file with 169 additions and 17 deletions.
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

0 comments on commit f040053

Please sign in to comment.