name: Basic usage on: push: paths-ignore: - 'docs/**' - 'README.md' schedule: # Weekly, at 01:30 AM on Friday (somewhat randomly chosen). - cron: '30 01 * * 5' workflow_dispatch: jobs: # Check that project-clang-format.py works (and the C/C++ files are formatted). lint: runs-on: ubuntu-latest name: Linting steps: - name: Checkout uses: actions/checkout@v6 - name: Run clang-format run: ./tools/project-clang-format.py - name: Set up Python uses: actions/setup-python@v6 with: python-version: '3.x' - name: Run black uses: psf/black@stable # Check that the most basic use-case works on different OSs. os: strategy: matrix: os: [ubuntu-22.04, ubuntu-24.04, windows-2022, windows-2025, macos-14, macos-15, macos-26] include: - boost-version: 1.78.0 runs-on: '${{ matrix.os }}' name: 'Image: ${{ matrix.os }}' defaults: run: shell: pwsh steps: - name: Checkout uses: actions/checkout@v6 - name: Set up Python uses: actions/setup-python@v6 with: python-version: '3.x' - name: Cache Boost uses: actions/cache@v5 with: path: boost_*.tar.gz key: 'boost_${{ matrix.boost-version }}' - name: Build Boost run: | python -m project.boost.download --cache . '${{ matrix.boost-version }}' boost/ python -m project.boost.build boost/ filesystem - name: Build example project run: | python -m project.build --boost boost/ --install install/ -- test/examples/boost/ build/ - name: Run example project run: ./test/examples/boost/run.ps1 ./install/bin/foo # Check that the most basic use-case works w/ different Python versions. python-versions: strategy: matrix: python-version: ['3.9', '3.10', '3.11', '3.12', '3.13', '3.14'] include: - os: ubuntu-latest - boost-version: 1.78.0 runs-on: '${{ matrix.os }}' name: 'Python ${{ matrix.python-version }}' defaults: run: shell: pwsh steps: - name: Checkout uses: actions/checkout@v6 with: fetch-depth: 0 - name: Set up Python uses: actions/setup-python@v6 with: python-version: '${{ matrix.python-version }}' - name: Cache Boost uses: actions/cache@v5 with: path: boost_*.tar.gz key: 'boost_${{ matrix.boost-version }}' - name: 'Install package & dependencies' run: pip install -q -e . - name: Check that scripts are runnable run: | boost-download --version boost-build --version project-build --version - name: Build Boost run: | boost-download --cache . '${{ matrix.boost-version }}' boost/ boost-build boost/ filesystem - name: Build example project run: | project-build --boost boost/ --install install/ -- test/examples/boost/ build/ - name: Run example project run: ./test/examples/boost/run.ps1 ./install/bin/foo