From 90075947ab120ffa4e1e04dcd7e3d401adc23872 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 | 144 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 144 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..ce2a1da --- /dev/null +++ b/.github/workflows/ci.yml @@ -0,0 +1,144 @@ +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 + - compiler: clang++-15 + install: clang-15 + cxxstd: "17,20,2b" + os: ubuntu-22.04 + - compiler: clang++-16 + install: clang-16 + cxxstd: "17,20,2b" + os: ubuntu-24.04 + - compiler: clang++-17 + install: clang-17 + cxxstd: "17,20,2b" + os: ubuntu-24.04 + - compiler: clang++-18 + install: clang-18 + cxxstd: "17,20,2b" + os: ubuntu-24.04 +# 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