--- (#809) #1673
This file contains 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: Validation | |
on: | |
push: | |
branches: | |
- master | |
pull_request: | |
concurrency: | |
group: ${{ github.workflow }}-${{ github.ref }} | |
cancel-in-progress: true | |
env: | |
PRE_COMMIT_HOME: "/home/runner/.cache/pre-commit" | |
jobs: | |
lint: | |
runs-on: ubuntu-latest | |
steps: | |
- name: Checkout repository | |
uses: actions/checkout@v4 | |
- name: Setup poetry | |
id: poetry_setup | |
uses: ItsDrike/setup-poetry@v1 | |
with: | |
python-version: 3.12 | |
- name: Pre-commit Environment Caching | |
uses: actions/cache@v4 | |
with: | |
path: ${{ env.PRE_COMMIT_HOME }} | |
key: | |
"precommit-${{ runner.os }}-${{ steps.poetry_setup.outputs.python-version }}-\ | |
${{ hashFiles('./.pre-commit-config.yaml') }}" | |
# Restore keys allows us to perform a cache restore even if the full cache key wasn't matched. | |
# That way we still end up saving new cache, but we can still make use of the cache from previous | |
# version. | |
restore-keys: "precommit-${{ runner.os }}-${{ steps.poetry_setup.outputs-python-version}}-" | |
- name: Run pre-commit hooks | |
run: SKIP=black,isort,ruff,pyright pre-commit run --all-files | |
- name: Run ruff linter | |
run: ruff check --output-format=full --show-fixes --exit-non-zero-on-fix . | |
- name: Run ruff formatter | |
run: ruff format --diff . | |
- name: Run pyright type checker | |
run: pyright . | |
# Steps below are here to generate and upload an artifact from | |
# this workflow so that we can have the data about author and some | |
# other things accessible from the status_embed workflow. | |
# Prepare the pull request payload artifact. If this fails, we | |
# fail silently using the `continue-on-error` option, since failure | |
# doesn't mean that the checks in this workflow have failed. | |
- name: Prepare Pull Request Payload artifact | |
id: prepare-artifact | |
if: always() && github.event_name == 'pull_request' | |
continue-on-error: true | |
run: cat $GITHUB_EVENT_PATH | jq '.pull_request' > pull_request_payload.json | |
# This only makes sense if the previous step succeeded. To | |
# get the original outcome of the previous step before the | |
# `continue-on-error` conclusion is applied, we use the | |
# `.outcome` value. This step also fails silently. | |
- name: Upload a Build Artifact | |
if: always() && steps.prepare-artifact.outcome == 'success' | |
continue-on-error: true | |
uses: actions/upload-artifact@v4 | |
with: | |
name: pull-request-payload | |
path: pull_request_payload.json |