Stop the Linux CI job running out of disk, and cut its runtime #31
Workflow file for this run
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| name: Build Status | |
| on: | |
| push: | |
| branches: | |
| - main | |
| tags: | |
| - v* | |
| paths-ignore: | |
| - LICENSE | |
| - README.md | |
| pull_request: | |
| branches: | |
| - main | |
| workflow_dispatch: | |
| concurrency: | |
| group: ${{ github.workflow }}-${{ github.head_ref || github.run_id }} | |
| cancel-in-progress: true | |
| permissions: | |
| contents: read | |
| jobs: | |
| build: | |
| runs-on: ${{ matrix.os }} | |
| permissions: | |
| contents: read | |
| checks: write | |
| pull-requests: write | |
| strategy: | |
| matrix: | |
| os: [ubuntu-latest, macos-latest, windows-latest] | |
| python-version: ["3.11"] | |
| steps: | |
| - uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0 | |
| with: | |
| persist-credentials: false | |
| - uses: actions-ext/python/setup@main | |
| with: | |
| version: ${{ matrix.python-version }} | |
| - uses: actions-ext/rust/setup@main | |
| # `make develop` compiles these from source otherwise, ~10 minutes a run. | |
| # These are the prebuilt binaries; the Makefile skips its own install when | |
| # they are already on PATH. | |
| - name: Install cargo tools | |
| uses: taiki-e/install-action@cb33e69fad06166ca28a42b2575e4dadabf62ee8 # v2.85.8 | |
| with: | |
| tool: cargo-nextest,cargo-llvm-cov | |
| - name: Install dependencies | |
| run: make develop | |
| - name: Lint | |
| run: make lint | |
| - name: Checks | |
| run: make checks | |
| if: matrix.os == 'ubuntu-latest' | |
| # On Linux `make dist-rs` rebuilds this same release profile, and | |
| # cibuildwheel then rebuilds the tree again from scratch in the manylinux | |
| # container, so building here is a third compile and a third copy on disk. | |
| - name: Build | |
| run: make build | |
| if: matrix.os != 'ubuntu-latest' | |
| - name: Test | |
| run: make coverage | |
| - name: Upload test results (Python) | |
| uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7.0.1 | |
| with: | |
| name: test-results-${{ matrix.os }}-${{ matrix.python-version }} | |
| path: '**/junit.xml' | |
| if: ${{ always() }} | |
| - name: Publish Unit Test Results | |
| uses: EnricoMi/publish-unit-test-result-action@d0a4676d0e0b938bc201470d88276b7c74c712b3 # v2.24.0 | |
| with: | |
| files: '**/junit.xml' | |
| if: matrix.os == 'ubuntu-latest' | |
| - name: Upload coverage | |
| uses: codecov/codecov-action@fb8b3582c8e4def4969c97caa2f19720cb33a72f # v7.0.0 | |
| with: | |
| token: ${{ secrets.CODECOV_TOKEN }} | |
| - name: Set up QEMU | |
| uses: docker/setup-qemu-action@v4 | |
| with: | |
| platforms: all | |
| if: runner.os == 'Linux' && runner.arch == 'X64' | |
| - name: Free disk space | |
| run: | | |
| sudo rm -rf /usr/local/lib/android /usr/share/dotnet /opt/ghc /usr/local/.ghcup /usr/share/swift | |
| df -h / | |
| shell: bash | |
| if: matrix.os == 'ubuntu-latest' | |
| - name: Make dist (Linux) | |
| run: | | |
| rm -rf dist | |
| make dist-rs | |
| make dist-py-sdist | |
| # cibuildwheel tars the entire working tree into the manylinux container. | |
| # The earlier build/coverage/dist-rs steps leave a multi-GB rust/target | |
| # cache that the wheel build recompiles from source anyway, so strip it | |
| # to keep the container copy from stalling. | |
| rm -rf rust/target | |
| make dist-py-wheel | |
| make dist-check | |
| shell: bash | |
| if: matrix.os == 'ubuntu-latest' | |
| - name: Make dist (Macos / Windows) | |
| run: | | |
| rm -rf dist | |
| make dist-py-wheel | |
| make dist-check | |
| shell: bash | |
| env: | |
| CIBW_ENVIRONMENT_MACOS: MACOSX_DEPLOYMENT_TARGET=11.0 | |
| if: matrix.os != 'ubuntu-latest' | |
| - uses: actions-ext/python/test-wheel@main | |
| with: | |
| module: nepenthe | |
| if: matrix.os == 'ubuntu-latest' | |
| - uses: actions-ext/python/test-sdist@main | |
| with: | |
| module: nepenthe | |
| if: matrix.os == 'ubuntu-latest' | |
| - uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7.0.1 | |
| with: | |
| name: dist-${{matrix.os}} | |
| path: dist |