feat: Round-robin session queue scheduling across users #30
This file contains hidden or 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 OpenAPI schema quality checks. | |
| # Checked-in OpenAPI schema should match the generated server schema. | |
| # | |
| # Checks for changes to files before running the checks. | |
| # If always_run is true, always runs the checks. | |
| name: 'openapi 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: | |
| openapi-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-22.04 | |
| timeout-minutes: 15 # expected run time: <5 min | |
| steps: | |
| - name: checkout | |
| uses: actions/checkout@v4 | |
| - name: Free up more disk space on the runner | |
| # https://github.com/actions/runner-images/issues/2840#issuecomment-1284059930 | |
| run: | | |
| echo "----- Free space before cleanup" | |
| df -h | |
| sudo rm -rf /usr/share/dotnet | |
| sudo rm -rf "$AGENT_TOOLSDIRECTORY" | |
| if [ -f /mnt/swapfile ]; then | |
| sudo swapoff /mnt/swapfile | |
| sudo rm -rf /mnt/swapfile | |
| fi | |
| echo "----- Free space after cleanup" | |
| df -h | |
| - name: check for changed files | |
| if: ${{ inputs.always_run != true }} | |
| id: changed-files | |
| # Pinned to the _hash_ for v45.0.9 to prevent supply-chain attacks. | |
| # See: | |
| # - CVE-2025-30066 | |
| # - https://www.stepsecurity.io/blog/harden-runner-detection-tj-actions-changed-files-action-is-compromised | |
| # - https://github.com/tj-actions/changed-files/issues/2463 | |
| uses: tj-actions/changed-files@a284dc1814e3fd07f2e34267fc8f81227ed29fb8 | |
| with: | |
| files_yaml: | | |
| src: | |
| - 'pyproject.toml' | |
| - 'invokeai/**' | |
| - name: setup uv | |
| if: ${{ steps.changed-files.outputs.src_any_changed == 'true' || inputs.always_run == true }} | |
| uses: astral-sh/setup-uv@v5 | |
| with: | |
| version: '0.6.10' | |
| enable-cache: true | |
| python-version: '3.11' | |
| - name: setup python | |
| if: ${{ steps.changed-files.outputs.src_any_changed == 'true' || inputs.always_run == true }} | |
| uses: actions/setup-python@v5 | |
| with: | |
| python-version: '3.11' | |
| - name: install dependencies | |
| if: ${{ steps.changed-files.outputs.src_any_changed == 'true' || inputs.always_run == true }} | |
| env: | |
| UV_INDEX: ${{ matrix.extra-index-url }} | |
| run: uv pip install --editable . | |
| - name: install frontend dependencies | |
| if: ${{ steps.changed-files.outputs.src_any_changed == 'true' || inputs.always_run == true }} | |
| uses: ./.github/actions/install-frontend-deps | |
| - name: copy schema | |
| if: ${{ steps.changed-files.outputs.src_any_changed == 'true' || inputs.always_run == true }} | |
| run: cp invokeai/frontend/web/openapi.json invokeai/frontend/web/openapi_orig.json | |
| shell: bash | |
| - name: generate schema | |
| if: ${{ steps.changed-files.outputs.src_any_changed == 'true' || inputs.always_run == true }} | |
| run: cd invokeai/frontend/web && uv run ../../../scripts/generate_openapi_schema.py > openapi.json && pnpm prettier --write openapi.json | |
| shell: bash | |
| - name: compare files | |
| if: ${{ steps.changed-files.outputs.src_any_changed == 'true' || inputs.always_run == true }} | |
| run: | | |
| if ! diff invokeai/frontend/web/openapi.json invokeai/frontend/web/openapi_orig.json; then | |
| echo "Files are different!"; | |
| exit 1; | |
| fi | |
| shell: bash |