Skip to content
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
64 changes: 64 additions & 0 deletions .github/workflows/pr.yml
Original file line number Diff line number Diff line change
Expand Up @@ -4,10 +4,68 @@ name: Checks
on:
pull_request:

permissions:
contents: read

jobs:

eval-changes:
name: Evaluate changes
runs-on: ubuntu-latest

steps:
- uses: actions/checkout@v4

- name: Evaluate | Check specific file types for changes
id: changed-files
uses: tj-actions/changed-files@v45.0.2
with:
files_yaml: |
build:
- MANIFEST.in
- Dockerfile
- .dockerignore
- scripts/**
ci:
- .github/workflows/**
docs:
- docs/**
- README.rst
- AUTHORS.rst
- CONTRIBUTING.rst
- CHANGELOG.rst
src:
- semantic_release/**
- pyproject.toml
tests:
- tests/**

- name: Evaluate | Detect if any of the combinations of file sets have changed
id: all-changes
run: |
printf '%s\n' "any_changed=false" >> $GITHUB_OUTPUT
if [ "${{ steps.changed-files.outputs.build_any_changed }}" == "true" ] || \
[ "${{ steps.changed-files.outputs.ci_any_changed }}" == "true" ] || \
[ "${{ steps.changed-files.outputs.docs_any_changed }}" == "true" ] || \
[ "${{ steps.changed-files.outputs.src_any_changed }}" == "true" ] || \
[ "${{ steps.changed-files.outputs.tests_any_changed }}" == "true" ]; then
printf '%s\n' "any_changed=true" >> $GITHUB_OUTPUT
fi

outputs:
any-file-changes: ${{ steps.all-changes.outputs.any_changed }}
build-changes: ${{ steps.changed-files.outputs.build_any_changed }}
ci-changes: ${{ steps.changed-files.outputs.ci_any_changed }}
doc-changes: ${{ steps.changed-files.outputs.docs_any_changed }}
src-changes: ${{ steps.changed-files.outputs.src_any_changed }}
test-changes: ${{ steps.changed-files.outputs.tests_any_changed }}


test-linux:
name: Python ${{ matrix.python-version }} on ${{ matrix.os }} tests
runs-on: ${{ matrix.os }}
needs: eval-changes
if: ${{ needs.eval-changes.outputs.src-changes == 'true' || needs.eval-changes.outputs.test-changes == 'true' || needs.eval-changes.outputs.ci-changes == 'true' }}
strategy:
matrix:
python-version:
Expand Down Expand Up @@ -66,6 +124,8 @@ jobs:
test-windows:
name: Python ${{ matrix.python-version }} on ${{ matrix.os }} tests
runs-on: ${{ matrix.os }}
needs: eval-changes
if: ${{ needs.eval-changes.outputs.src-changes == 'true' || needs.eval-changes.outputs.test-changes == 'true' || needs.eval-changes.outputs.ci-changes == 'true' }}
strategy:
# Since the current test suite takes 10-15 minutes to complete on windows, we are
# only going to run it on the oldest version of python we support. The older version
Expand Down Expand Up @@ -122,7 +182,10 @@ jobs:
report_paths: ./tests/reports/*.xml
annotate_only: true


lint:
needs: eval-changes
if: ${{ needs.eval-changes.outputs.any-file-changes == 'true' }}
runs-on: ubuntu-latest

steps:
Expand All @@ -147,6 +210,7 @@ jobs:
- name: mypy
run: python -m mypy --ignore-missing-imports semantic_release


commitlint:
runs-on: ubuntu-latest

Expand Down