Skip to content

Add code cov

Add code cov #2496

Workflow file for this run

name: GPU Tests
on:
push:
branches: [main]
pull_request:
types:
- labeled
- opened
- synchronize
# Cancel the job if new commits are pushed
# https://stackoverflow.com/questions/66335225/how-to-cancel-previous-runs-in-the-pr-when-you-push-new-commitsupdate-the-curre
concurrency:
group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.ref }}
cancel-in-progress: true
jobs:
check:
runs-on: ubuntu-latest
steps:
- uses: flying-sheep/check@v1
with:
success: ${{ github.event_name == 'push' || contains(github.event.pull_request.labels.*.name, 'run-gpu-ci') }}
get-envs:
runs-on: ubuntu-latest
needs: check
outputs:
stable-dev: ${{ steps.get-envs.outputs.stable-dev }}
prerelease: ${{ steps.get-envs.outputs.prerelease }}
steps:
- uses: actions/checkout@v5
with:
filter: blob:none
fetch-depth: 0
- uses: astral-sh/setup-uv@v6
with:
enable-cache: false
- id: get-envs
run: |
# Stable and dev environments
STABLE_DEV_JSON=$(uvx hatch env show --json | jq -c '
to_entries
| map(
select(.key | startswith("hatch-test") and endswith("12") and (contains("prerelease") | not))
| {
name: .key,
python: .value.python | sub("3[.]13"; "3.13.3"),
}
)')
echo "stable-dev=${STABLE_DEV_JSON}" | tee -a $GITHUB_OUTPUT
# Prerelease environments
PRERELEASE_JSON=$(uvx hatch env show --json | jq -c '
to_entries
| map(
select(.key | startswith("hatch-test") and endswith("12") and contains("prerelease"))
| {
name: .key,
python: .value.python | sub("3[.]13"; "3.13.3"),
}
)')
echo "prerelease=${PRERELEASE_JSON}" | tee -a $GITHUB_OUTPUT
test-stable-dev:
name: Test (${{ matrix.env.name }})
needs: get-envs
runs-on: cirun-aws-gpu
timeout-minutes: 30
strategy:
fail-fast: false
matrix:
env: ${{ fromJson(needs.get-envs.outputs.stable-dev) }}
env:
ENV_NAME: ${{ matrix.env.name }}
steps:
- uses: actions/checkout@v4
with:
fetch-depth: 0
filter: blob:none
- uses: astral-sh/setup-uv@v6
with:
python-version: ${{ matrix.env.python }}
- name: Install dependencies
run: uvx hatch -v env create ${{ matrix.env.name }}
- name: Run tests
run: |
mkdir -p test-data
if [[ "${{ matrix.env.name }}" == *"stable"* ]]; then
uvx hatch run ${{ matrix.env.name }}:run-cov -v --color=yes --junitxml=test-data/test-results.xml
uvx hatch run ${{ matrix.env.name }}:cov-combine
uvx hatch run ${{ matrix.env.name }}:coverage xml
uvx hatch run ${{ matrix.env.name }}:cov-report
else
uvx hatch run ${{ matrix.env.name }}:run -v --color=yes
fi
- name: Upload test results
if: ${{ !cancelled() && contains(matrix.env.name, 'stable') }}
uses: codecov/codecov-action@v5
with:
report_type: test_results
files: test-data/test-results.xml
use_oidc: true
fail_ci_if_error: false
- name: Upload coverage data
if: contains(matrix.env.name, 'stable')
uses: codecov/codecov-action@v5
with:
files: test-data/coverage.xml
use_oidc: true
fail_ci_if_error: false
test-prerelease:
name: Test (${{ matrix.env.name }})
needs: get-envs
runs-on: cirun-aws-gpu
timeout-minutes: 30
continue-on-error: true # Prerelease failures don't fail the workflow
strategy:
fail-fast: false
matrix:
env: ${{ fromJson(needs.get-envs.outputs.prerelease) }}
env:
ENV_NAME: ${{ matrix.env.name }}
steps:
- uses: actions/checkout@v4
with:
fetch-depth: 0
filter: blob:none
- uses: astral-sh/setup-uv@v6
with:
python-version: ${{ matrix.env.python }}
- name: Install dependencies
run: uvx hatch -v env create ${{ matrix.env.name }}
- name: Run tests
run: uvx hatch run ${{ matrix.env.name }}:run
remove-label:
name: Remove 'run-gpu-ci' Label
runs-on: ubuntu-latest
if: ${{ always() && github.event_name == 'pull_request' && contains(github.event.pull_request.labels.*.name, 'run-gpu-ci') }}
steps:
- uses: actions-ecosystem/action-remove-labels@v1
with:
labels: 'run-gpu-ci'
github_token: ${{ secrets.GITHUB_TOKEN }}
stable-dev-green:
name: CI-Pass
if: always()
needs:
- get-envs
- test-stable-dev
runs-on: ubuntu-latest
steps:
- uses: re-actors/alls-green@release/v1
with:
jobs: ${{ toJSON(needs) }}
all-green:
name: All Tests Green
if: always()
needs:
- get-envs
- test-stable-dev
- test-prerelease
runs-on: ubuntu-latest
steps:
- uses: re-actors/alls-green@release/v1
with:
allowed-failures: test-prerelease
jobs: ${{ toJSON(needs) }}