Repository navigation
Fixing warnings in the test suite #3930
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: ci | |
| on: | |
| push: | |
| branches: | |
| - "main" | |
| - "test-me/*" | |
| pull_request: | |
| concurrency: | |
| group: ${{ github.workflow }}-${{ github.head_ref || github.ref }} | |
| cancel-in-progress: ${{ github.event_name == 'pull_request' }} | |
| defaults: | |
| run: | |
| shell: bash -el {0} | |
| permissions: {} | |
| jobs: | |
| should-run-ci: | |
| name: should run ci | |
| runs-on: ubuntu-slim | |
| permissions: | |
| contents: read | |
| if: | | |
| github.repository == 'Parcels-code/Parcels' | |
| && (github.event_name == 'push' || github.event_name == 'pull_request') | |
| steps: | |
| - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1 | |
| with: | |
| fetch-depth: 2 | |
| persist-credentials: false | |
| - uses: xarray-contrib/ci-trigger@74ddc46fc6ca7509549ac7b660d7a185948c1e74 # v1.2 | |
| id: check-skip | |
| with: | |
| keyword: "[skip-ci]" | |
| - name: Decide if we skip CI | |
| if: steps.check-skip.outputs.trigger-found == 'true' || contains(github.event.pull_request.labels.*.name, 'skip-ci') | |
| run: | | |
| echo "Skipping CI." | |
| exit 1 | |
| cache-pixi-lock: | |
| runs-on: ubuntu-latest | |
| needs: [should-run-ci] | |
| permissions: | |
| contents: read | |
| outputs: | |
| cache-key: ${{ steps.pixi-lock.outputs.cache-key }} | |
| pixi-version: ${{ steps.pixi-lock.outputs.pixi-version }} | |
| steps: | |
| - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1 | |
| with: | |
| persist-credentials: false | |
| - uses: xarray-contrib/pixi-lock/create-and-cache@1fab4c17af8243f6ca1321bc941cf2325f46c05d # v0.1.1 | |
| id: pixi-lock | |
| - uses: actions/upload-artifact@cf430e030ddbb5b0abf93d22962f4752f3646cd9 # v7.0.2 | |
| with: | |
| name: pixi-lock | |
| path: pixi.lock | |
| unit-test: | |
| name: "Unit tests: ${{ matrix.os }} | pixi run -e ${{ matrix.pixi-environment }} tests" | |
| runs-on: ${{ matrix.os }}-latest | |
| needs: [cache-pixi-lock] | |
| permissions: | |
| contents: read | |
| env: | |
| COVERAGE_REPORT: "${{ matrix.os }}_${{ matrix.pixi-environment }}_unit_test_report.html" | |
| strategy: | |
| fail-fast: false | |
| matrix: | |
| os: [ubuntu, windows, macos] | |
| pixi-environment: [test] # `test` resolves to the latest Python | |
| include: | |
| - os: ubuntu | |
| pixi-environment: "test-py311" | |
| - os: ubuntu | |
| pixi-environment: "test-py313" | |
| - os: ubuntu | |
| pixi-environment: "test-min-versions" | |
| steps: | |
| - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1 | |
| with: | |
| persist-credentials: false | |
| - name: Restore cached pixi lockfile | |
| uses: xarray-contrib/pixi-lock/restore@1fab4c17af8243f6ca1321bc941cf2325f46c05d # v0.1.1 | |
| with: | |
| cache-key: ${{ needs.cache-pixi-lock.outputs.cache-key }} | |
| - uses: prefix-dev/setup-pixi@f00437f565399d418b0acc85936d12c1fb668347 # v0.10.1 | |
| with: | |
| pixi-version: ${{ needs.cache-pixi-lock.outputs.pixi-version }} | |
| cache: true | |
| cache-write: ${{ github.event_name == 'push' && github.ref_name == 'main' }} | |
| # https://github.com/actions/cache/blob/main/tips-and-workarounds.md#update-a-cache | |
| - name: Restore cached hypothesis directory | |
| id: restore-hypothesis-cache | |
| uses: actions/cache/restore@55cc8345863c7cc4c66a329aec7e433d2d1c52a9 # v6.1.0 | |
| with: | |
| path: .hypothesis/ | |
| key: cache-hypothesis-${{ runner.os }}-${{ matrix.pixi-environment }}-${{ github.run_id }} | |
| restore-keys: | | |
| cache-hypothesis-${{ runner.os }}-${{ matrix.pixi-environment }}- | |
| - name: Unit test | |
| id: unit-test | |
| run: | | |
| pixi run -e ${{ matrix.pixi-environment }} tests -v -s --cov=parcels --cov-report=xml --html="${COVERAGE_REPORT}" --self-contained-html | |
| # explicitly save the cache so it gets updated, also do this even if it fails. | |
| - name: Save cached hypothesis directory | |
| id: save-hypothesis-cache | |
| if: always() && steps.unit-test.outcome != 'skipped' | |
| uses: actions/cache/save@55cc8345863c7cc4c66a329aec7e433d2d1c52a9 # v6.1.0 | |
| with: | |
| path: .hypothesis/ | |
| key: cache-hypothesis-${{ runner.os }}-${{ matrix.pixi-environment }}-${{ github.run_id }} | |
| - name: Codecov | |
| uses: codecov/codecov-action@303a32d7a59b442fa8d48b6a1cc6825c09c847a5 # v7.1.1 | |
| env: | |
| CODECOV_TOKEN: ${{ secrets.CODECOV_TOKEN }} # zizmor: ignore[secrets-outside-env] | |
| with: | |
| flags: unit-tests | |
| - name: Upload test results | |
| if: ${{ always() }} # Always run this step, even if tests fail | |
| uses: actions/upload-artifact@cf430e030ddbb5b0abf93d22962f4752f3646cd9 # v7.0.2 | |
| with: | |
| name: Unittest report ${{ matrix.os }}-${{ matrix.pixi-environment }} | |
| path: ${{ env.COVERAGE_REPORT }} | |
| flaky-unit-test: | |
| name: "Flaky unit tests: ${{ matrix.os }} | pixi run -e ${{ matrix.pixi-environment }} tests-flaky" | |
| runs-on: ${{ matrix.os }}-latest | |
| needs: [cache-pixi-lock] | |
| permissions: | |
| contents: read | |
| env: | |
| COVERAGE_REPORT: "${{ matrix.os }}_${{ matrix.pixi-environment }}_unit_test_report.html" | |
| strategy: | |
| fail-fast: false | |
| matrix: | |
| os: [ubuntu] | |
| pixi-environment: [test] | |
| steps: | |
| - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1 | |
| with: | |
| persist-credentials: false | |
| - name: Restore cached pixi lockfile | |
| uses: xarray-contrib/pixi-lock/restore@1fab4c17af8243f6ca1321bc941cf2325f46c05d # v0.1.1 | |
| with: | |
| cache-key: ${{ needs.cache-pixi-lock.outputs.cache-key }} | |
| - uses: prefix-dev/setup-pixi@f00437f565399d418b0acc85936d12c1fb668347 # v0.10.1 | |
| with: | |
| pixi-version: ${{ needs.cache-pixi-lock.outputs.pixi-version }} | |
| cache: true | |
| cache-write: ${{ github.event_name == 'push' && github.ref_name == 'main' }} | |
| # https://github.com/actions/cache/blob/main/tips-and-workarounds.md#update-a-cache | |
| - name: Restore cached hypothesis directory | |
| id: restore-hypothesis-cache | |
| uses: actions/cache/restore@55cc8345863c7cc4c66a329aec7e433d2d1c52a9 # v6.1.0 | |
| with: | |
| path: .hypothesis/ | |
| key: cache-hypothesis-${{ runner.os }}-${{ matrix.pixi-environment }}-${{ github.run_id }} | |
| restore-keys: | | |
| cache-hypothesis-${{ runner.os }}-${{ matrix.pixi-environment }}- | |
| - name: Unit test | |
| id: unit-test | |
| run: | | |
| pixi run -e ${{ matrix.pixi-environment }} tests-flaky -v -s --cov=parcels --cov-report=xml --html="${COVERAGE_REPORT}" --self-contained-html | |
| # explicitly save the cache so it gets updated, also do this even if it fails. | |
| - name: Save cached hypothesis directory | |
| id: save-hypothesis-cache | |
| if: always() && steps.unit-test.outcome != 'skipped' | |
| uses: actions/cache/save@55cc8345863c7cc4c66a329aec7e433d2d1c52a9 # v6.1.0 | |
| with: | |
| path: .hypothesis/ | |
| key: cache-hypothesis-${{ runner.os }}-${{ matrix.pixi-environment }}-${{ github.run_id }} | |
| - name: Codecov | |
| uses: codecov/codecov-action@303a32d7a59b442fa8d48b6a1cc6825c09c847a5 # v7.1.1 | |
| env: | |
| CODECOV_TOKEN: ${{ secrets.CODECOV_TOKEN }} # zizmor: ignore[secrets-outside-env] | |
| with: | |
| flags: flaky-tests | |
| - name: Upload test results | |
| if: ${{ always() }} # Always run this step, even if tests fail | |
| uses: actions/upload-artifact@cf430e030ddbb5b0abf93d22962f4752f3646cd9 # v7.0.2 | |
| with: | |
| name: Flaky unittest report ${{ matrix.os }}-${{ matrix.pixi-environment }} | |
| path: ${{ env.COVERAGE_REPORT }} | |
| validation-test: | |
| name: "Validation tests | pixi run tests-validation" | |
| runs-on: ubuntu-latest | |
| needs: [cache-pixi-lock] | |
| permissions: | |
| contents: read | |
| env: | |
| COVERAGE_REPORT: "ubuntu_test_validation_test_report.html" | |
| steps: | |
| - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1 | |
| with: | |
| persist-credentials: false | |
| - name: Restore cached pixi lockfile | |
| uses: xarray-contrib/pixi-lock/restore@1fab4c17af8243f6ca1321bc941cf2325f46c05d # v0.1.1 | |
| with: | |
| cache-key: ${{ needs.cache-pixi-lock.outputs.cache-key }} | |
| - uses: prefix-dev/setup-pixi@f00437f565399d418b0acc85936d12c1fb668347 # v0.10.1 | |
| with: | |
| pixi-version: ${{ needs.cache-pixi-lock.outputs.pixi-version }} | |
| cache: true | |
| cache-write: ${{ github.event_name == 'push' && github.ref_name == 'main' }} | |
| # https://github.com/actions/cache/blob/main/tips-and-workarounds.md#update-a-cache | |
| - name: Restore cached hypothesis directory | |
| id: restore-hypothesis-cache | |
| uses: actions/cache/restore@55cc8345863c7cc4c66a329aec7e433d2d1c52a9 # v6.1.0 | |
| with: | |
| path: .hypothesis/ | |
| key: cache-hypothesis-${{ runner.os }}-validation-${{ github.run_id }} | |
| restore-keys: | | |
| cache-hypothesis-${{ runner.os }}-validation- | |
| - name: Validation test | |
| id: unit-test | |
| run: | | |
| pixi run tests-validation -v -s --cov=parcels --cov-report=xml --html="${COVERAGE_REPORT}" --self-contained-html | |
| # explicitly save the cache so it gets updated, also do this even if it fails. | |
| - name: Save cached hypothesis directory | |
| id: save-hypothesis-cache | |
| if: always() && steps.unit-test.outcome != 'skipped' | |
| uses: actions/cache/save@55cc8345863c7cc4c66a329aec7e433d2d1c52a9 # v6.1.0 | |
| with: | |
| path: .hypothesis/ | |
| key: cache-hypothesis-${{ runner.os }}-validation-${{ github.run_id }} | |
| - name: Codecov | |
| uses: codecov/codecov-action@303a32d7a59b442fa8d48b6a1cc6825c09c847a5 # v7.1.1 | |
| env: | |
| CODECOV_TOKEN: ${{ secrets.CODECOV_TOKEN }} # zizmor: ignore[secrets-outside-env] | |
| with: | |
| flags: validation-tests | |
| - name: Upload test results | |
| if: ${{ always() }} # Always run this step, even if tests fail | |
| uses: actions/upload-artifact@cf430e030ddbb5b0abf93d22962f4752f3646cd9 # v7.0.2 | |
| with: | |
| name: Validation test report ubuntu-test | |
| path: ${{ env.COVERAGE_REPORT }} | |
| merge-test-artifacts: | |
| runs-on: ubuntu-latest | |
| permissions: {} | |
| if: always() | |
| needs: [unit-test, flaky-unit-test, validation-test, typechecking] | |
| steps: | |
| - name: Merge Artifacts | |
| uses: actions/upload-artifact/merge@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7.0.1 | |
| with: | |
| name: Testing reports | |
| pattern: "* report *" | |
| typechecking: | |
| name: "TypeChecking: pixi run typing" | |
| runs-on: ubuntu-latest | |
| needs: [cache-pixi-lock] | |
| permissions: | |
| contents: read | |
| steps: | |
| - name: Checkout | |
| uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1 | |
| with: | |
| persist-credentials: false | |
| - name: Restore cached pixi lockfile | |
| uses: xarray-contrib/pixi-lock/restore@1fab4c17af8243f6ca1321bc941cf2325f46c05d # v0.1.1 | |
| with: | |
| cache-key: ${{ needs.cache-pixi-lock.outputs.cache-key }} | |
| - uses: prefix-dev/setup-pixi@f00437f565399d418b0acc85936d12c1fb668347 # v0.10.1 | |
| with: | |
| pixi-version: ${{ needs.cache-pixi-lock.outputs.pixi-version }} | |
| cache: true | |
| cache-write: ${{ github.event_name == 'push' && github.ref_name == 'main' }} | |
| - name: Typechecking | |
| run: | | |
| pixi run typing --html-report mypy-report | |
| - name: Upload test results | |
| if: ${{ always() }} # Upload even on mypy error | |
| uses: actions/upload-artifact@cf430e030ddbb5b0abf93d22962f4752f3646cd9 # v7 | |
| with: | |
| name: Mypy report | |
| path: mypy-report | |
| qaqc: | |
| name: "Additional QAQC (separate to pre-commit - pixi run more-qaqc)" | |
| runs-on: ubuntu-latest | |
| needs: [cache-pixi-lock] | |
| permissions: | |
| contents: read | |
| steps: | |
| - name: Checkout | |
| uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1 | |
| with: | |
| persist-credentials: false | |
| - name: Restore cached pixi lockfile | |
| uses: xarray-contrib/pixi-lock/restore@1fab4c17af8243f6ca1321bc941cf2325f46c05d # v0.1.1 | |
| with: | |
| cache-key: ${{ needs.cache-pixi-lock.outputs.cache-key }} | |
| - uses: prefix-dev/setup-pixi@f00437f565399d418b0acc85936d12c1fb668347 # v0.10.1 | |
| with: | |
| pixi-version: ${{ needs.cache-pixi-lock.outputs.pixi-version }} | |
| cache: true | |
| cache-write: ${{ github.event_name == 'push' && github.ref_name == 'main' }} | |
| - name: Check tutorial prose | |
| run: pixi run docs-spelling | |
| zizmor: | |
| name: GHA Security Analysis using Zizmor | |
| runs-on: ubuntu-latest | |
| permissions: | |
| security-events: write # Required for upload-sarif (used by zizmor-action) to upload SARIF files. | |
| steps: | |
| - name: Checkout repository | |
| uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1 | |
| with: | |
| persist-credentials: false | |
| - name: Run zizmor | |
| uses: zizmorcore/zizmor-action@3dc1ecc9bcb9e94e9b2c709687979e1298497054 # v0.6.2 |