Spaces:
Running
Running
| name: Store pytest durations | |
| on: | |
| workflow_dispatch: | |
| schedule: | |
| # Run job at 6:30 UTC, 10.30pm PST, or 11.30pm PDT | |
| - cron: "30 6 * * *" | |
| env: | |
| PYTEST_RUN_PATH: "src/backend/tests" | |
| jobs: | |
| build: | |
| name: Run pytest and store durations | |
| runs-on: ubuntu-latest | |
| permissions: | |
| contents: write | |
| pull-requests: write | |
| env: | |
| UV_CACHE_DIR: /tmp/.uv-cache | |
| steps: | |
| - uses: actions/checkout@v4 | |
| - name: Install uv | |
| uses: astral-sh/setup-uv@v4 | |
| with: | |
| enable-cache: true | |
| cache-dependency-glob: "uv.lock" | |
| - name: "Set up Python" | |
| uses: actions/setup-python@v5 | |
| with: | |
| python-version-file: "pyproject.toml" | |
| - name: Restore uv cache | |
| uses: actions/cache@v4 | |
| with: | |
| path: /tmp/.uv-cache | |
| key: uv-${{ runner.os }}-${{ hashFiles('uv.lock') }} | |
| restore-keys: | | |
| uv-${{ runner.os }}-${{ hashFiles('uv.lock') }} | |
| uv-${{ runner.os }} | |
| - name: Install the project | |
| run: uv sync --dev | |
| - name: Run unit tests | |
| uses: nick-fields/retry@v3 | |
| with: | |
| timeout_minutes: 12 | |
| max_attempts: 2 | |
| command: uv run pytest src/backend/tests --durations-path src/backend/tests/.test_durations --splitting-algorithm least_duration --store-durations | |
| - name: Minimize uv cache | |
| run: uv cache prune --ci | |
| - name: Create Pull Request | |
| uses: peter-evans/create-pull-request@v7 | |
| with: | |
| token: ${{ secrets.GITHUB_TOKEN }} | |
| branch-token: ${{ secrets.GITHUB_TOKEN }} | |
| commit-message: "chore: update test durations" | |
| title: "chore: update test durations" | |
| body: | | |
| Automated PR to update test durations file. | |
| This PR was automatically created by the store_pytest_durations workflow. | |
| branch: update-test-durations | |
| branch-suffix: timestamp | |
| delete-branch: true | |
| maintainer-can-modify: true | |