-
Notifications
You must be signed in to change notification settings - Fork 22
147 lines (125 loc) · 5.2 KB
/
generate_coverage.yaml
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
141
142
143
144
145
146
147
name: Generate coverage data for dpnp
on:
pull_request:
push:
branches: [master]
permissions: read-all
jobs:
generate-coverage:
name: Generate coverage and push to Coveralls.io
runs-on: ubuntu-latest
permissions:
# Needed to cancel any previous runs that are not completed for a given workflow
actions: write
defaults:
run:
shell: bash -l {0}
env:
python-ver: '3.12'
CHANNELS: '-c dppy/label/dev -c intel -c conda-forge --override-channels'
NO_INTEL_CHANNELS: '-c dppy/label/dev -c conda-forge --override-channels'
# Install the latest oneAPI compiler to work around an issue
INSTALL_ONE_API: 'yes'
steps:
- name: Cancel Previous Runs
uses: styfle/cancel-workflow-action@85880fa0301c86cca9da44039ee3bb12d3bedbfa # 0.12.1
with:
access_token: ${{ github.token }}
- name: Checkout repo
uses: actions/checkout@eef61447b9ff4aafe5dcd4e0bbf5d482be7e7871 # v4.2.1
with:
fetch-depth: 0
- name: Add Intel repository
if: env.INSTALL_ONE_API == 'yes'
run: |
wget https://apt.repos.intel.com/intel-gpg-keys/GPG-PUB-KEY-INTEL-SW-PRODUCTS-2023.PUB
sudo apt-key add GPG-PUB-KEY-INTEL-SW-PRODUCTS-2023.PUB
rm GPG-PUB-KEY-INTEL-SW-PRODUCTS-2023.PUB
sudo add-apt-repository "deb https://apt.repos.intel.com/oneapi all main"
sudo apt-get update
- name: Install latest Intel OneAPI
if: env.INSTALL_ONE_API == 'yes'
run: |
sudo apt-get install intel-oneapi-mkl-2024.2* \
intel-oneapi-mkl-devel-2024.2* \
intel-oneapi-tbb-devel-2021.13* \
intel-oneapi-libdpstd-devel-2022.6* \
intel-oneapi-compiler-dpcpp-cpp-2024.2*
- name: Install Lcov
run: |
sudo apt-get install lcov
- name: Setup miniconda
uses: conda-incubator/setup-miniconda@a4260408e20b96e80095f42ff7f1a15b27dd94ca # v3.0.4
with:
miniforge-version: latest
use-mamba: true
channels: conda-forge
python-version: ${{ env.python-ver }}
activate-environment: 'coverage'
# Here is an issue in conda gh-12356 causing adding defaults to the list of channels
# upon running `conda config --append channels conda-forge`, while mamba requires to have only conda-forge channel
- name: Remove defaults channel
run: |
conda config --remove channels defaults
conda config --show
# Sometimes `mamba install ...` fails due to slow download speed rate, so disable the check in mamba
- name: Disable speed limit check in mamba
run: echo "MAMBA_NO_LOW_SPEED_LIMIT=1" >> $GITHUB_ENV
- name: Install dpnp dependencies
if: env.INSTALL_ONE_API == 'yes'
run: |
mamba install cython llvm cmake">=3.21" scikit-build ninja pytest pytest-cov coverage[toml] \
dpctl">=0.18.0dev0" ${{ env.NO_INTEL_CHANNELS }}
- name: Install dpnp dependencies
if: env.INSTALL_ONE_API != 'yes'
run: |
mamba install cython llvm cmake">=3.21" scikit-build ninja pytest pytest-cov coverage[toml] \
dpctl">=0.18.0dev0" dpcpp_linux-64 mkl-devel-dpcpp tbb-devel onedpl-devel ${{ env.CHANNELS }}
- name: Conda info
run: |
mamba info
mamba list
- name: Build dpnp with coverage
id: build_coverage
uses: nick-fields/retry@7152eba30c6575329ac0576536151aca5a72780e # v3.0.0
with:
shell: bash
timeout_minutes: 60
max_attempts: 5
retry_on: error
command: |
. $CONDA/etc/profile.d/conda.sh
conda activate coverage
[ -f /opt/intel/oneapi/setvars.sh ] && source /opt/intel/oneapi/setvars.sh
git clean -fxd
python scripts/gen_coverage.py --pytest-opts="--ignore tests/test_random.py" --verbose
- name: Total number of coverage attempts
run: |
echo "Total number of coverage attempts made: ${{ steps.build_coverage.outputs.total_attempts }}"
- name: Install coverall dependencies
run: |
sudo gem install coveralls-lcov
pip install coveralls==4.0.1
- name: Upload coverage data to coveralls.io
run: |
echo "Processing pytest-coverage"
export DPNP_PYTEST_LCOV=$(find . -name dpnp_pytest.lcov)
coveralls-lcov -v -n $DPNP_PYTEST_LCOV > pytest-dpnp-c-api-coverage.json
# merge file with coverage data and upload
echo "Merging files with coverage data"
coveralls --service=github --merge=pytest-dpnp-c-api-coverage.json
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
COVERALLS_PARALLEL: true
coveralls:
name: Indicate completion to coveralls.io
needs: generate-coverage
runs-on: ubuntu-latest
container: python:3-slim
steps:
- name: Finished
run: |
pip3 install --upgrade coveralls==3.3.1
coveralls --service=github --finish
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}