From d093370713c8bb85ec5c1ba19d4c0aa3c5cfcf16 Mon Sep 17 00:00:00 2001 From: Gulliver Date: Sun, 18 Dec 2022 23:56:55 +0100 Subject: [PATCH] updated github actions to cross-platform build and added action for github pages --- .github/workflows/cmake.yaml | 32 ++++++++++++++++++++------ .github/workflows/doxygen-gh-pages.yml | 29 +++++++++++++++++++++++ 2 files changed, 54 insertions(+), 7 deletions(-) create mode 100644 .github/workflows/doxygen-gh-pages.yml diff --git a/.github/workflows/cmake.yaml b/.github/workflows/cmake.yaml index 413f168..8f23fe8 100644 --- a/.github/workflows/cmake.yaml +++ b/.github/workflows/cmake.yaml @@ -15,24 +15,42 @@ jobs: # The CMake configure and build commands are platform agnostic and should work equally well on Windows or Mac. # You can convert this to a matrix build if you need cross-platform coverage. # See: https://docs.github.com/en/free-pro-team@latest/actions/learn-github-actions/managing-complex-workflows#using-a-build-matrix - runs-on: ubuntu-latest + runs-on: ${{ matrix.os }} + strategy: + fail-fast: false + matrix: + os: [ubuntu-latest, macos-latest, windows-latest] steps: - uses: actions/checkout@v3 - name: Prepare dependencies - run: sudo apt-get update && sudo apt-get install -yq libboost-system-dev libboost-date-time-dev cmake graphviz doxygen + run: | + if [ "$RUNNER_OS" == "Linux" ]; then + sudo apt-get update && \ + sudo apt-get install -yq \ + libboost-system-dev \ + libboost-date-time-dev \ + cmake \ + graphviz doxygen + elif [ "$RUNNER_OS" == "Windows" ]; then + choco install boost-msvc-14.3 graphviz doxygen.install + elif [ "$RUNNER_OS" == "macOS" ]; then + brew install boost graphviz doxygen + else + echo "$RUNNER_OS not supported" + exit 1 + fi + shell: bash - name: Configure CMake - # Configure CMake in a 'build' subdirectory. `CMAKE_BUILD_TYPE` is only required if you are using a single-configuration generator such as make. - # See https://cmake.org/cmake/help/latest/variable/CMAKE_BUILD_TYPE.html?highlight=cmake_build_type - run: cmake -B ${{github.workspace}}/build -DCMAKE_BUILD_TYPE=${{env.BUILD_TYPE}} - + run: cmake -B ${{github.workspace}}/build -D CMAKE_BUILD_TYPE=${{env.BUILD_TYPE}} + shell: bash - name: Build # Build your program with the given configuration run: cmake --build ${{github.workspace}}/build --config ${{env.BUILD_TYPE}} + shell: bash - name: Test working-directory: ${{github.workspace}}/build # Execute tests defined by the CMake configuration. # See https://cmake.org/cmake/help/latest/manual/ctest.1.html for more detail run: ctest -C ${{env.BUILD_TYPE}} - diff --git a/.github/workflows/doxygen-gh-pages.yml b/.github/workflows/doxygen-gh-pages.yml new file mode 100644 index 0000000..5f7570e --- /dev/null +++ b/.github/workflows/doxygen-gh-pages.yml @@ -0,0 +1,29 @@ +name: Doxygen Github Pages Deploy action + +on: + push: + branches: + - main + +permissions: + contents: write +jobs: + build-and-deploy: + concurrency: ci-${{ github.ref }} # Recommended if you intend to make multiple deployments in quick succession. + runs-on: ubuntu-latest + steps: + - name: Checkout 🛎️ + uses: actions/checkout@v3 + - name: Prepare dependencies + run: sudo apt-get update && sudo apt-get install -yq libboost-system-dev libboost-date-time-dev cmake graphviz doxygen + - name: configure + run: cmake -B build -S . -DEXPATPP_BUILD_DOCS=ON + - name: clean generated docs dir + run: rm -rf build/html + - name: build + run: cmake --build build --target doc + + - name: Deploy 🚀 + uses: JamesIves/github-pages-deploy-action@v4 + with: + folder: build/html # The folder the action should deploy.