-
Notifications
You must be signed in to change notification settings - Fork 270
140 lines (118 loc) · 4.15 KB
/
coverage.yml
File metadata and controls
140 lines (118 loc) · 4.15 KB
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
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
# SPDX-FileCopyrightText: Copyright (c) 2025 NVIDIA CORPORATION & AFFILIATES. All rights reserved.
#
# SPDX-License-Identifier: Apache-2.0
name: "CI: Coverage"
on:
# TODO: Remove this -- this just makes it possible to test during review
push:
branches:
- "main"
- "pull-request/[0-9]+"
# TODO
schedule:
- cron: '0 0 * * *' # This runs the workflow every day at 12:00 AM UTC
workflow_dispatch: {}
workflow_call: {}
defaults:
run:
shell: bash --noprofile --norc -xeuo pipefail {0}
env:
PY_VER: "3.14"
CUDA_VER: "13.0.2"
LOCAL_CTK: "1"
GPU: "a100"
DRIVER: "latest"
ARCH: "x86_64"
jobs:
coverage:
name: Coverage
runs-on: "linux-arm64-gpu-a100-latest-1"
# Our self-hosted runners require a container
# TODO: use a different (nvidia?) container
container:
options: -u root --security-opt seccomp=unconfined --shm-size 16g
image: ubuntu:22.04
env:
NVIDIA_VISIBLE_DEVICES: ${{ env.NVIDIA_VISIBLE_DEVICES }}
steps:
- name: Ensure GPU is working
run: nvidia-smi
- name: Checkout ${{ github.event.repository.name }}
uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0
- name: Setup proxy cache
uses: nv-gha-runners/setup-proxy-cache@main
continue-on-error: true
- name: Install dependencies
uses: ./.github/actions/install_unix_deps
continue-on-error: false
with:
# for artifact fetching, graphics libs
dependencies: "jq wget libgl1 libegl1"
dependent_exes: "jq wget"
- name: Set environment variables
env:
BUILD_CUDA_VER: ${{ env.CUDA_VER }}
CUDA_VER: ${{ env.CUDA_VER }}
HOST_PLATFORM: linux-64
LOCAL_CTK: ${{ env.LOCAL_CTK }}
PY_VER: ${{ env.PY_VER }}
SHA: ${{ github.sha }}
run: |
./ci/tools/env-vars test
echo "CUDA_PYTHON_COVERAGE=1" >> $GITHUB_ENV
- name: Set up Python
uses: actions/setup-python@a26af69be951a213d495a4c3e4e4022e16d87065 # v5.6.0
with:
python-version: ${{ env.PY_VER }}
env:
# we use self-hosted runners on which setup-python behaves weirdly...
AGENT_TOOLSDIRECTORY: "/opt/hostedtoolcache"
- name: Set up mini CTK
if: ${{ env.LOCAL_CTK == '1' }}
uses: ./.github/actions/fetch_ctk
continue-on-error: false
with:
host-platform: ${{ env.HOST_PLATFORM }}
cuda-version: ${{ env.CUDA_VER }}
- name: Build cuda-pathfinder
run:
pip install -v ./cuda_pathfinder
- name: Build cuda-python-test-helpers
run:
pip install -v ./cuda_python_test_helpers
- name: Build cuda-bindings
run:
cd cuda_bindings
pip install -v . --group test
- name: Build cuda-core
run:
cd cuda_core
pip install -v . --group test
- name: Install coverage tools
run: |
pip install coverage pytest-cov
- name: Set cuda package install root
run: |
echo "CUDA_PYTHON_ROOT=$(python -c 'import cuda; print(cuda.__path__[0])')" >> $GITHUB_ENV
- name: Run cuda.pathfinder tests
run:
pytest -v --cov=$CUDA_PYTHON_ROOT --cov-append --cov-config=.coveragerc cuda_pathfinder/tests
- name: Run cuda.bindings tests
run:
pytest -v --cov=$CUDA_PYTHON_ROOT --cov-append --cov-config=.coveragerc cuda_bindings/tests
- name: Run cuda.core tests
run:
pytest -v --cov=$CUDA_PYTHON_ROOT --cov-append --cov-config=.coveragerc cuda_core/tests
- name: Generate coverage report
run: |
coverage html
coverage xml -o htmlcov/coverage.xml
- name: Deploy to gh-pages
uses: JamesIves/github-pages-deploy-action@4a3abc783e1a24aeb44c16e869ad83caf6b4cc23 # v4.7.4
with:
git-config-name: cuda-python-bot
git-config-email: cuda-python-bot@users.noreply.github.com
folder: htmlcov/
target-folder: docs/coverage/
commit-message: "Deploy coverage: ${{ env.COMMIT_HASH }}"
clean: false