diff --git a/.github/workflows/pypi.yml b/.github/workflows/pypi.yml index 75ab17f4b1..35de6f933d 100644 --- a/.github/workflows/pypi.yml +++ b/.github/workflows/pypi.yml @@ -3,7 +3,6 @@ on: push: branches: - main - - auto-release pull_request: branches: [main] release: @@ -16,10 +15,49 @@ concurrency: group: ${{ github.workflow }}-${{ github.event_name == 'pull_request' && github.head_ref || github.sha }} cancel-in-progress: true +permissions: {} + jobs: + check_changes: + runs-on: ubuntu-latest + outputs: + should_run: ${{ steps.set_should_run.outputs.should_run }} + steps: + - uses: actions/checkout@v4 + with: + persist-credentials: false + - uses: dorny/paths-filter@de90cc6fb38fc0963ad72b210f1f284cd68cea36 # v3.0.2 + id: filter + with: + filters: | + any_changed: + - '.github/workflows/pypi.yml' + - 'pyproject.toml' + - 'setup.py' + - 'pytensor/_version.py' + - 'pytensor/scan_perform.pyx' + - 'pytensor/scan_perform_ext.py' + - name: Set should_run output + id: set_should_run + run: | + if [[ "${{ github.event_name == 'release' || + ( + github.ref == 'refs/heads/main' || + github.event_name == 'pull_request' + ) && steps.filter.outputs.any_changed == 'true' + }}" == "true" ]]; then + echo "should_run=true" >> $GITHUB_OUTPUT + else + echo "should_run=false" >> $GITHUB_OUTPUT + fi + # The job to build precompiled pypi wheels. make_sdist: name: Make SDist + needs: check_changes + # Run if it's a release or if relevant files changed on main + if: | + needs.check_changes.outputs.should_run == 'true' runs-on: ubuntu-latest permissions: # write id-token and attestations are required to attest build provenance @@ -49,6 +87,10 @@ jobs: run_checks: name: Build & inspect our package. + needs: check_changes + # Run if it's a release or if relevant files changed on main + if: | + needs.check_changes.outputs.should_run == 'true' # Note: the resulting builds are not actually published. # This is purely for additional testing and diagnostic purposes. runs-on: ubuntu-latest @@ -62,6 +104,10 @@ jobs: build_wheels: name: Build wheels for ${{ matrix.platform }} + needs: check_changes + # Run if it's a release or if relevant files changed on main + if: | + needs.check_changes.outputs.should_run == 'true' runs-on: ${{ matrix.platform }} permissions: # write id-token and attestations are required to attest build provenance @@ -96,6 +142,10 @@ jobs: build_universal_wheel: name: Build universal wheel for Pyodide + needs: check_changes + # Run if it's a release or if relevant files changed on main + if: | + needs.check_changes.outputs.should_run == 'true' runs-on: ubuntu-latest permissions: # write id-token and attestations are required to attest build provenance @@ -133,7 +183,7 @@ jobs: check_dist: name: Check dist - needs: [make_sdist,build_wheels] + needs: [check_changes, make_sdist, build_wheels] runs-on: ubuntu-22.04 steps: - uses: actions/download-artifact@v4