ci: streamline workflows #5464
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
# Runs python code quality checks. | |
# | |
# Checks for changes to python files before running the checks. | |
# If always_run is true, always runs the checks. | |
# | |
# TODO: Add mypy or pyright to the checks. | |
name: 'python checks' | |
on: | |
push: | |
branches: | |
- 'main' | |
pull_request: | |
types: | |
- 'ready_for_review' | |
- 'opened' | |
- 'synchronize' | |
merge_group: | |
workflow_dispatch: | |
inputs: | |
always_run: | |
description: 'Always run the checks' | |
required: true | |
type: boolean | |
default: true | |
workflow_call: | |
inputs: | |
always_run: | |
description: 'Always run the checks' | |
required: true | |
type: boolean | |
default: true | |
jobs: | |
python-checks: | |
env: | |
# uv requires a venv by default - but for this, we can simply use the system python | |
UV_SYSTEM_PYTHON: 1 | |
runs-on: ubuntu-latest | |
timeout-minutes: 5 # expected run time: <1 min | |
steps: | |
- name: checkout | |
uses: actions/checkout@v4 | |
- name: check for changed python files | |
if: ${{ inputs.always_run != true }} | |
id: changed-files | |
uses: tj-actions/changed-files@v42 | |
with: | |
files_yaml: | | |
python: | |
- 'pyproject.toml' | |
- 'invokeai/**' | |
- '!invokeai/frontend/web/**' | |
- 'tests/**' | |
- name: setup uv | |
if: ${{ steps.changed-files.outputs.python_any_changed == 'true' || inputs.always_run == true }} | |
uses: astral-sh/setup-uv@v5 | |
with: | |
version: '0.6.4' | |
enable-cache: true | |
- name: ruff check | |
if: ${{ steps.changed-files.outputs.python_any_changed == 'true' || inputs.always_run == true }} | |
run: uv tool run [email protected] check --output-format=github . | |
shell: bash | |
- name: ruff format | |
if: ${{ steps.changed-files.outputs.python_any_changed == 'true' || inputs.always_run == true }} | |
run: uv tool run [email protected] format --check . | |
shell: bash |