From f9e19d1e948cdc14dbf43002bb613679eeec09f9 Mon Sep 17 00:00:00 2001 From: Mohammad Nejati Date: Thu, 30 May 2024 14:44:35 +0000 Subject: [PATCH] Add GHA CI --- .github/workflows/ci.yml | 128 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 128 insertions(+) create mode 100644 .github/workflows/ci.yml diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml new file mode 100644 index 0000000..b64c924 --- /dev/null +++ b/.github/workflows/ci.yml @@ -0,0 +1,128 @@ +name: CI + +on: + pull_request: + push: + branches: + - master + - develop + - feature/** + - pr/** + +jobs: + posix: + strategy: + fail-fast: false + matrix: + include: + - compiler: g++-7 + cxxstd: "17" + os: ubuntu-20.04 + install: g++-7 + - compiler: g++-8 + cxxstd: "17,2a" + os: ubuntu-20.04 + install: g++-8 + - compiler: g++-9 + cxxstd: "17,2a" + os: ubuntu-20.04 + - compiler: g++-10 + cxxstd: "17,2a" + os: ubuntu-20.04 + install: g++-10 + - compiler: g++-11 + cxxstd: "17,2a" + os: ubuntu-22.04 + install: g++-11 + - compiler: g++-12 + cxxstd: "17,20,2b" + os: ubuntu-22.04 + install: g++-12 + - compiler: g++-13 + cxxstd: "17,20,2b" + os: ubuntu-24.04 + install: g++-13 + - compiler: clang++-6.0 + cxxstd: "17" + os: ubuntu-18.04 + install: clang-6.0 + - compiler: clang++-7 + cxxstd: "17" + os: ubuntu-18.04 + install: clang-7 + - compiler: clang++-8 + cxxstd: "17" + os: ubuntu-20.04 + install: clang-8 + - compiler: clang++-9 + cxxstd: "17,2a" + os: ubuntu-20.04 + install: clang-9 + - compiler: clang++-10 + cxxstd: "17,2a" + os: ubuntu-20.04 + - compiler: clang++-11 + cxxstd: "17,2a" + os: ubuntu-20.04 + - compiler: clang++-12 + cxxstd: "17,2a" + os: ubuntu-20.04 + - compiler: clang++-13 + cxxstd: "17,20,2b" + os: ubuntu-22.04 + install: clang-13 + - compiler: clang++-14 + cxxstd: "17,20,2b" + os: ubuntu-22.04 + install: clang-14 +# macos + # - compiler: clang + # os: macos-12 + # cxxstd: "17,20,2b" + # supported: true + # - compiler: clang + # os: macos-13 + # cxxstd: "17,20,2b" + # supported: true + # - compiler: clang + # os: macos-14 + # cxxstd: "17,20,2b" + # supported: true + + runs-on: ${{matrix.os}} + + steps: + - uses: actions/checkout@v3 + + - name: Install packages + if: matrix.install + run: sudo apt install ${{matrix.install}} + + - name: Build + run: | + mkdir build + cd build + + standards=$(sed 's/,/ /g' <<<"${{matrix.cxxstd}}") + variants="Debug Release" + err=0 + for standard in ${standards} ; do + for variant in ${variants} ; do + if [[ err -ne 0 ]] ; then + echo "skipping: ${standard} ${variant}" + else + echo "running: ${standard} ${variant}" + cmake .. -DCMAKE_CXX_COMPILER=${{matrix.compiler}} -DCMAKE_CXX_STANDARD=${standard} -DCMAKE_BUILD_TYPE=${variant} + cmake --build . + err=$? + fi + done + done + [[ $err -ne 0 ]] && false || "true" + + - name: Run tests + run: | + cd build/test + ./driver + + \ No newline at end of file