From 3ba755672c0b8d6a6b705b746893fb1ea24306e7 Mon Sep 17 00:00:00 2001 From: David Robertson Date: Thu, 6 Apr 2023 19:40:19 +0100 Subject: [PATCH 1/2] Inline backend-meta linting config This has caused us too much pain---it makes things especially hard to debug. I don't think the indirection is worth it, since we haven't used it in anger across all of our projects. Additionally: I think I'm coming round to the view that - all CI config is a mess, - efforts to reduce duplication are a Sisephean struggle that aren't worth it, so - just copy and paste it and move on with your life. Or perhaps this is just a crisis of faith? --- .github/workflows/tests.yml | 57 +++++++++++++++++++++++++++++++++++-- 1 file changed, 54 insertions(+), 3 deletions(-) diff --git a/.github/workflows/tests.yml b/.github/workflows/tests.yml index f01342c8b776..4333f55a533d 100644 --- a/.github/workflows/tests.yml +++ b/.github/workflows/tests.yml @@ -65,9 +65,59 @@ jobs: - run: .ci/scripts/check_lockfile.py lint: - uses: "matrix-org/backend-meta/.github/workflows/python-poetry-ci.yml@v2" - with: - typechecking-extras: "all" + runs-on: ubuntu-latest + steps: + - name: Checkout repository + uses: actions/checkout@v3 + + - name: Setup Poetry + uses: matrix-org/setup-python-poetry@v1 + with: + install-project: "false" + + - name: Import order (isort) + run: poetry run isort --check --diff . + + - name: Code style (black) + run: poetry run black --check --diff . + + - name: Semantic checks (ruff) + # --quiet suppresses the update check. + run: poetry run ruff --quiet . + + lint-mypy: + runs-on: ubuntu-latest + name: Typechecking + steps: + - name: Checkout repository + uses: actions/checkout@v3 + + - name: Setup Poetry + uses: matrix-org/setup-python-poetry@v1 + with: + # We want to make use of type hints in optional dependencies too. + extras: all + # We have seen odd mypy failures that were resolved when we started + # installing the project again: + # https://github.com/matrix-org/synapse/pull/15376#issuecomment-1498983775 + # To make CI green, err towards caution and install the project. + install-project: "true" + + - name: Install Rust + uses: dtolnay/rust-toolchain@1.58.1 + - uses: Swatinem/rust-cache@v2 + + # NB: I have two concerns with this action: + # 1. We occasionally see odd mypy problems that aren't reproducible + # locally with clean caches. I suspect some dodgy caching behaviour. + # 2. The action uses GHA machinery that's deprecated + # (https://github.com/AustinScola/mypy-cache-github-action/issues/277) + # It may be simpler to use actions/cache ourselves to restore .mypy_cache. + - name: Restore/persist mypy's cache + uses: AustinScola/mypy-cache-github-action@df56268388422ee282636ee2c7a9cc55ec644a41 + + - name: Run mypy + run: poetry run mypy lint-crlf: runs-on: ubuntu-latest @@ -165,6 +215,7 @@ jobs: if: ${{ !cancelled() }} # Run this even if prior jobs were skipped needs: - lint + - lint-mypy - lint-crlf - lint-newsfile - lint-pydantic From 3b56d7d3bf1b7ce973b14db9ee87c74469cbfe91 Mon Sep 17 00:00:00 2001 From: David Robertson Date: Thu, 6 Apr 2023 20:01:32 +0100 Subject: [PATCH 2/2] Changelog --- changelog.d/15409.misc | 1 + 1 file changed, 1 insertion(+) create mode 100644 changelog.d/15409.misc diff --git a/changelog.d/15409.misc b/changelog.d/15409.misc new file mode 100644 index 000000000000..007111da34f2 --- /dev/null +++ b/changelog.d/15409.misc @@ -0,0 +1 @@ +Explicitly install Synapse during typechecking in CI.