From 3a1e893d68ab9ef5a9351ae83a8867caa8002a70 Mon Sep 17 00:00:00 2001 From: ToruNiina Date: Sat, 15 Jun 2024 19:41:59 +0900 Subject: [PATCH] ci: add actions test and docs --- .github/workflows/document.yml | 32 ++++++ .github/workflows/main.yml | 190 +++++++++++++++++++++++++++++++++ 2 files changed, 222 insertions(+) create mode 100644 .github/workflows/document.yml create mode 100644 .github/workflows/main.yml diff --git a/.github/workflows/document.yml b/.github/workflows/document.yml new file mode 100644 index 0000000..a086361 --- /dev/null +++ b/.github/workflows/document.yml @@ -0,0 +1,32 @@ +name: document + +on: + push: + branches: + - main + +jobs: + deploy: + runs-on: Ubuntu-22.04 + steps: + - name: Checkout + uses: actions/checkout@v4 + with: + submodules: true + - name: Install Hugo + uses: peaceiris/actions-hugo@v3 + with: + hugo-version: 'latest' + extended: true + - name: Build Webpage + working-directory: ./docs/ + run: | + hugo --minify + - name: Deploy + uses: peaceiris/actions-gh-pages@v3 + with: + github_token: ${{ secrets.GITHUB_TOKEN }} + publish_branch: gh-pages + publish_dir: ./book/public + force_orphan: true + commit_message: ${{ github.event.head_commit.message }} diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml new file mode 100644 index 0000000..ab68676 --- /dev/null +++ b/.github/workflows/main.yml @@ -0,0 +1,190 @@ +name: build + +on: [push, pull_request] + +jobs: + build-linux-gcc: + runs-on: Ubuntu-22.04 + strategy: + matrix: + compiler: ['g++-12', 'g++-11', 'g++-10', 'g++-9'] + standard: ['11', '14', '17', '20'] + precompile: ['ON', 'OFF'] + steps: + - name: Checkout + uses: actions/checkout@v4 + with: + submodules: true + - name: Install + run: | + sudo apt-get update + sudo apt-get install language-pack-fr # test serializer w/ locale + sudo apt-get install ${{ matrix.compiler }} + - name: Configure + run: | + cmake -B build/ -DCMAKE_CXX_COMPILER=${{ matrix.compiler }} -DCMAKE_CXX_STANDARD=${{ matrix.standard }} -DTOML11_BUILD_TESTS=ON -DTOML11_PRECOMPILE=${{ matrix.precompile }} + - name: Build + run: | + cmake --build build/ + - name: Test + run: | + ctest --output-on-failure --test-dir build/ + build-linux-clang: + runs-on: Ubuntu-22.04 + strategy: + matrix: + compiler: ['15', '14', '13', '12', '11'] + standard: ['11', '14', '17', '20'] + precompile: ['ON', 'OFF'] + exclude: + - {compiler: '14', standard: '20'} # to avoid using gcc-13 libstdc++ + - {compiler: '13', standard: '20'} # with older clang + - {compiler: '12', standard: '20'} + - {compiler: '11', standard: '20'} + steps: + - name: Checkout + uses: actions/checkout@v4 + with: + submodules: true + - name: Install + run: | + sudo apt-get update + sudo apt-get install language-pack-fr # test serializer w/ locale + sudo apt-get install clang-${{ matrix.compiler }} + - name: Configure + run: | + cmake -B build/ -DCMAKE_VERBOSE_MAKEFILE=1 -DCMAKE_CXX_COMPILER=clang++-${{ matrix.compiler }} -DCMAKE_CXX_STANDARD=${{ matrix.standard }} -DTOML11_BUILD_TESTS=ON -DTOML11_PRECOMPILE=${{ matrix.precompile }} + - name: Build + run: | + cmake --build build/ + - name: Test + run: | + ctest --output-on-failure --test-dir build/ + build-linux-old-gcc: + runs-on: Ubuntu-20.04 + strategy: + matrix: + compiler: ['g++-8', 'g++-7'] + standard: ['11', '14', '17', '20'] + precompile: ['ON', 'OFF'] + exclude: + - {compiler: 'g++-7', standard: '20'} + - {compiler: 'g++-8', standard: '17'} + - {compiler: 'g++-8', standard: '20'} + steps: + - name: Checkout + uses: actions/checkout@v4 + with: + submodules: true + - name: Install + run: | + sudo apt-get update + sudo apt-get install language-pack-fr # test serializer w/ locale + sudo apt-get install ${{ matrix.compiler }} + - name: Configure + run: | + cmake -B build/ -DCMAKE_CXX_COMPILER=${{ matrix.compiler }} -DCMAKE_CXX_STANDARD=${{ matrix.standard }} -DTOML11_BUILD_TESTS=ON -DTOML11_PRECOMPILE=${{ matrix.precompile }} + - name: Build + run: | + cmake --build build/ + - name: Test + run: | + ctest --output-on-failure --test-dir build/ + + build-linux-old-clang: + runs-on: Ubuntu-20.04 + strategy: + matrix: + compiler: ['10', '9', '8', '7', '6.0'] + standard: ['11', '14', '17', '20'] + precompile: ['ON', 'OFF'] + exclude: + - {compiler: '6.0', standard: '20'} + - {compiler: '7', standard: '20'} + - {compiler: '8', standard: '20'} + - {compiler: '9', standard: '20'} + steps: + - name: Checkout + uses: actions/checkout@v4 + with: + submodules: true + - name: Install + run: | + sudo apt-get update + sudo apt-get install language-pack-fr # test serializer w/ locale + sudo apt-get install clang-${{ matrix.compiler }} + - name: Configure + run: | + cmake -B build/ -DCMAKE_CXX_COMPILER=clang++-${{ matrix.compiler }} -DCMAKE_CXX_STANDARD=${{ matrix.standard }} -DTOML11_BUILD_TESTS=ON -DTOML11_PRECOMPILE=${{ matrix.precompile }} + - name: Build + run: | + cmake --build build/ + - name: Test + run: | + ctest --output-on-failure --test-dir build/ + + build-osx-13: + runs-on: macos-13 + strategy: + matrix: + standard: ['11', '14', '17', '20'] + precompile: ['ON', 'OFF'] + steps: + - name: Checkout + uses: actions/checkout@v4 + with: + submodules: true + - name: Configure + run: | + cmake -B build/ -DCMAKE_CXX_STANDARD=${{ matrix.standard }} -DTOML11_BUILD_TESTS=ON -DTOML11_PRECOMPILE=${{ matrix.precompile }} + - name: Build + run: | + cmake --build build/ + - name: Test + run: | + ctest --output-on-failure --test-dir build/ + + build-osx-12: + runs-on: macos-12 + strategy: + matrix: + standard: ['11', '14', '17', '20'] + precompile: ['ON', 'OFF'] + steps: + - name: Checkout + uses: actions/checkout@v4 + with: + submodules: true + - name: Configure + run: | + cmake -B build/ -DCMAKE_CXX_STANDARD=${{ matrix.standard }} -DTOML11_BUILD_TESTS=ON -DTOML11_PRECOMPILE=${{ matrix.precompile }} + - name: Build + run: | + cmake --build build/ + - name: Test + run: | + ctest --output-on-failure --test-dir build/ + + build-windows-msvc: + runs-on: windows-2022 + strategy: + matrix: + standard: ['11', '14', '17', '20'] + config: ['Release', 'Debug'] + precompile: ['ON', 'OFF'] + steps: + - name: Checkout + uses: actions/checkout@v4 + with: + submodules: true + - uses: ilammy/msvc-dev-cmd@v1 + - name: Configure + shell: cmd + run: | + cmake -B build/ -G "NMake Makefiles" -DTOML11_BUILD_TESTS=ON -DCMAKE_CXX_STANDARD=${{ matrix.standard }} -DTOML11_PRECOMPILE=${{ matrix.precompile }} + - name: Build + run: | + cmake --build ./build --config "${{ matrix.config }}" + - name: Test + run: | + ctest --build-config "${{ matrix.config }}" --test-dir build/ --output-on-failure