Skip to content
This repository has been archived by the owner on Apr 26, 2024. It is now read-only.

Avoid running CI steps when the files they check have not been changed. #14745

Merged
merged 7 commits into from
Sep 25, 2023
Merged
Show file tree
Hide file tree
Changes from 2 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
85 changes: 73 additions & 12 deletions .github/workflows/tests.yml
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Ironically it seems that many of the steps have been skipped on this PR, I wonder if we should include .github/workflows in the list of steps to run most jobs?

Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,9 @@ jobs:
runs-on: ubuntu-latest
outputs:
clokep marked this conversation as resolved.
Show resolved Hide resolved
rust: ${{ !startsWith(github.ref, 'refs/pull/') || steps.filter.outputs.rust }}
trial: ${{ !startsWith(github.ref, 'refs/pull/') || steps.filter.outputs.trial }}
integration: ${{ !startsWith(github.ref, 'refs/pull/') || steps.filter.outputs.integration }}
linting: ${{ !startsWith(github.ref, 'refs/pull/') || steps.filter.outputs.linting }}
steps:
- uses: dorny/paths-filter@v2
id: filter
Expand All @@ -29,8 +32,41 @@ jobs:
- 'Cargo.toml'
- 'Cargo.lock'
clokep marked this conversation as resolved.
Show resolved Hide resolved

trial:
- 'synapse/**'
- 'tests/**'
- 'rust/**'
- 'Cargo.toml'
- 'Cargo.lock'
- 'pyproject.toml'
- 'poetry.lock'

integration:
- 'synapse/**'
- 'rust/**'
- 'Cargo.toml'
clokep marked this conversation as resolved.
Show resolved Hide resolved
- 'Cargo.lock'
- 'pyproject.toml'
- 'poetry.lock'
- 'docker/**'

linting:
- 'synapse/**'
- 'docker/**'
- 'tests/**'
- 'scripts-dev/**'
- 'contrib/**'
- 'synmark/**'
- 'stubs/**'
- '.ci/**'
- 'pyproject.toml'
clokep marked this conversation as resolved.
Show resolved Hide resolved
- 'poetry.lock'

check-sampleconfig:
runs-on: ubuntu-latest
needs: changes
if: ${{ needs.changes.outputs.linting == 'true' }}

steps:
- uses: actions/checkout@v3
- uses: actions/setup-python@v4
Expand All @@ -44,6 +80,9 @@ jobs:

check-schema-delta:
runs-on: ubuntu-latest
needs: changes
if: ${{ needs.changes.outputs.linting == 'true' }}

steps:
- uses: actions/checkout@v3
- uses: actions/setup-python@v4
Expand All @@ -54,6 +93,8 @@ jobs:

lint:
uses: "matrix-org/backend-meta/.github/workflows/python-poetry-ci.yml@v2"
needs: changes
if: ${{ needs.changes.outputs.linting == 'true' }}
with:
typechecking-extras: "all"

Expand Down Expand Up @@ -82,6 +123,9 @@ jobs:

lint-pydantic:
runs-on: ubuntu-latest
needs: changes
if: ${{ needs.changes.outputs.linting == 'true' }}

steps:
- uses: actions/checkout@v3
with:
Expand Down Expand Up @@ -185,8 +229,10 @@ jobs:
sytest_test_matrix: ${{ steps.get-matrix.outputs.sytest_test_matrix }}

trial:
if: ${{ !cancelled() && !failure() }} # Allow previous steps to be skipped, but not fail
needs: calculate-test-jobs
if: ${{ !cancelled() && !failure() && needs.changes.outputs.trial == 'true' }} # Allow previous steps to be skipped, but not fail
needs:
- calculate-test-jobs
- changes
runs-on: ubuntu-latest
strategy:
matrix:
Expand Down Expand Up @@ -245,8 +291,10 @@ jobs:

trial-olddeps:
# Note: sqlite only; no postgres
if: ${{ !cancelled() && !failure() }} # Allow previous steps to be skipped, but not fail
needs: linting-done
if: ${{ !cancelled() && !failure() && needs.changes.outputs.trial == 'true' }} # Allow previous steps to be skipped, but not fail
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Aside: I think the olddeps job doesn't care if poetry.lock changes, only if pyproject.toml does. Not worth the yaml faff to encode that here though!

needs:
- linting-done
- changes
runs-on: ubuntu-20.04
steps:
- uses: actions/checkout@v3
Expand Down Expand Up @@ -313,8 +361,10 @@ jobs:
trial-pypy:
# Very slow; only run if the branch name includes 'pypy'
# Note: sqlite only; no postgres. Completely untested since poetry move.
if: ${{ contains(github.ref, 'pypy') && !failure() && !cancelled() }}
needs: linting-done
if: ${{ contains(github.ref, 'pypy') && !failure() && !cancelled() && needs.changes.outputs.trial == 'true' }}
needs:
- linting-done
- changes
runs-on: ubuntu-latest
strategy:
matrix:
Expand Down Expand Up @@ -344,8 +394,10 @@ jobs:
|| true

sytest:
if: ${{ !failure() && !cancelled() }}
needs: calculate-test-jobs
if: ${{ !failure() && !cancelled() && needs.changes.outputs.integration == 'true' }}
needs:
- calculate-test-jobs
- changes
runs-on: ubuntu-latest
container:
image: matrixdotorg/sytest-synapse:${{ matrix.job.sytest-tag }}
Expand Down Expand Up @@ -429,8 +481,10 @@ jobs:


portdb:
if: ${{ !failure() && !cancelled() }} # Allow previous steps to be skipped, but not fail
needs: linting-done
if: ${{ !failure() && !cancelled() && needs.changes.outputs.linting == 'true' }} # Allow previous steps to be skipped, but not fail
clokep marked this conversation as resolved.
Show resolved Hide resolved
needs:
- linting-done
- changes
runs-on: ubuntu-latest
strategy:
matrix:
Expand Down Expand Up @@ -489,8 +543,10 @@ jobs:
schema_diff

complement:
if: "${{ !failure() && !cancelled() }}"
needs: linting-done
if: "${{ !failure() && !cancelled() && needs.changes.outputs.integration == 'true' }}"
needs:
- linting-done
- changes
runs-on: ubuntu-latest

strategy:
Expand Down Expand Up @@ -571,5 +627,10 @@ jobs:
# The newsfile lint may be skipped on non PR builds
# Cargo test is skipped if there is no changes on Rust code
clokep marked this conversation as resolved.
Show resolved Hide resolved
skippable: |
trial
trial-olddeps
sytest
portdb
complement
lint-newsfile
cargo-test
1 change: 1 addition & 0 deletions changelog.d/14745.misc
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
Avoid running CI steps when the files they check have not been changed.