77 lines
2.4 KiB
YAML
77 lines
2.4 KiB
YAML
name: Store pytest durations
|
|
|
|
on:
|
|
workflow_dispatch:
|
|
schedule:
|
|
# Run job at 6:30 UTC every Monday (10.30pm PST/11.30pm PDT Sunday night)
|
|
- cron: "30 6 * * 1"
|
|
|
|
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:
|
|
OPENAI_API_KEY: ${{ secrets.OPENAI_API_KEY }}
|
|
ASTRA_DB_API_ENDPOINT: ${{ secrets.ASTRA_DB_API_ENDPOINT }}
|
|
ASTRA_DB_APPLICATION_TOKEN: ${{ secrets.ASTRA_DB_APPLICATION_TOKEN }}
|
|
steps:
|
|
- uses: actions/checkout@v6
|
|
- name: "Setup Environment"
|
|
uses: astral-sh/setup-uv@v6
|
|
with:
|
|
enable-cache: true
|
|
cache-dependency-glob: "uv.lock"
|
|
python-version: "3.13"
|
|
prune-cache: false
|
|
- name: Install the project
|
|
run: uv sync
|
|
- name: Run unit tests
|
|
id: run_tests
|
|
continue-on-error: true
|
|
run: uv run pytest src/backend/tests/unit --timeout=150 --durations-path src/backend/tests/.test_durations --splitting-algorithm least_duration --store-durations
|
|
|
|
|
|
- name: Close existing PRs
|
|
uses: actions/github-script@v8
|
|
with:
|
|
github-token: ${{ secrets.GITHUB_TOKEN }}
|
|
script: |
|
|
const { data: pulls } = await github.rest.pulls.list({
|
|
owner: context.repo.owner,
|
|
repo: context.repo.repo,
|
|
state: 'open'
|
|
});
|
|
|
|
for (const pull of pulls) {
|
|
if (pull.title === "chore: update test durations") {
|
|
await github.rest.pulls.update({
|
|
owner: context.repo.owner,
|
|
repo: context.repo.repo,
|
|
pull_number: pull.number,
|
|
state: 'closed'
|
|
});
|
|
}
|
|
}
|
|
|
|
- name: Create Pull Request
|
|
uses: peter-evans/create-pull-request@v8
|
|
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
|