File size: 2,017 Bytes
d202ada
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
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