name: Test on: push: pull_request: schedule: # Weekly, at 5:45 AM on Friday (somewhat randomly chosen). - cron: '45 5 * * 5' workflow_dispatch: jobs: old_and_new: strategy: matrix: version: [1.58.0, 1.74.0] os: [ubuntu-18.04, ubuntu-20.04, windows-2016, windows-2019] toolset: [auto, clang, gcc, mingw, msvc] exclude: # No Visual Studio on Linux. - {os: ubuntu-18.04, toolset: msvc} - {os: ubuntu-20.04, toolset: msvc} # GCC == MinGW-w64 on Windows. - {os: windows-2016, toolset: gcc} - {os: windows-2019, toolset: gcc} runs-on: '${{ matrix.os }}' name: '${{ matrix.version }} / ${{ matrix.os }} / ${{ matrix.toolset }}' defaults: run: shell: pwsh steps: - name: Checkout uses: actions/checkout@v2 - name: Cache Boost uses: actions/cache@v2.1.4 with: path: '${{ runner.workspace }}/boost_*.tar.gz' key: 'boost-${{ matrix.version }}' - name: Clean up PATH uses: egor-tensin/cleanup-path@v2 if: runner.os == 'Windows' - name: Set up GCC uses: egor-tensin/setup-gcc@v1 if: matrix.toolset == 'gcc' - name: Set up MinGW uses: egor-tensin/setup-mingw@v2 if: matrix.toolset == 'mingw' || (matrix.toolset == 'clang' && runner.os == 'Windows') - name: Set up Clang uses: egor-tensin/setup-clang@v1 if: matrix.toolset == 'clang' - id: build name: Build Boost uses: ./ with: version: '${{ matrix.version }}' toolset: '${{ matrix.toolset }}' configuration: Release libraries: filesystem program_options system - name: Check Boost uses: ./.github/actions/check-boost with: # This tests that Boost is indeed in that directory, don't replace # with ${{ steps.build.outputs.root }}. root: '${{ runner.workspace }}/boost' - name: Check libraries uses: ./.github/actions/check-libraries with: toolset: '${{ matrix.toolset }}' librarydir: '${{ steps.build.outputs.librarydir }}' libraries: filesystem program_options system different_configurations: strategy: matrix: os: [ubuntu-20.04, windows-2016, windows-2019] platform: [x64, x86] configuration: [Debug, Release] runs-on: '${{ matrix.os }}' name: '${{ matrix.os }} / ${{ matrix.platform }} / ${{ matrix.configuration }}' defaults: run: shell: pwsh steps: - name: Checkout uses: actions/checkout@v2 - name: Cache Boost uses: actions/cache@v2.1.4 with: path: '${{ runner.workspace }}/boost_*.tar.gz' key: 'boost-${{ matrix.version }}' - name: Set up GCC uses: egor-tensin/setup-gcc@v1 with: platform: '${{ matrix.platform }}' if: runner.os == 'Linux' - id: build name: Build Boost uses: ./ with: version: 1.66.0 platform: '${{ matrix.platform }}' configuration: '${{ matrix.configuration }}' libraries: filesystem program_options system directory: '${{ runner.workspace }}/foo' - name: Check Boost uses: ./.github/actions/check-boost with: # This tests that Boost is indeed in that directory, don't replace # with ${{ steps.build.outputs.root }}. root: '${{ runner.workspace }}/foo' - name: Check libraries uses: ./.github/actions/check-libraries with: librarydir: '${{ steps.build.outputs.librarydir }}' libraries: filesystem program_options system