-
Notifications
You must be signed in to change notification settings - Fork 0
149 lines (130 loc) · 3.71 KB
/
testing.yml
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
148
149
name: Unit tests
on:
schedule:
- cron: "0 5 * * 0"
## This is a bit overkill... ideally we only merge into master after a PR is approved
# push:
# branches:
# - master
# paths:
# - "src/**"
# - "tests/**"
# - ".github/workflows/testing.yml"
pull_request:
types:
- review_requested
workflow_dispatch:
jobs:
requirements:
runs-on: ubuntu-latest
name: Poetry dependencies to requirements.txt
steps:
- name: Set up Git repository
uses: actions/checkout@v4
with:
fetch-depth: 0
lfs: false
- name: Install poetry
uses: abatilo/actions-poetry@v2
- name: Install python and pip
uses: actions/setup-python@v5
# with:
# python-version: '3.10'
- name: Install poetry-plugin-export
run: pip install poetry-plugin-export
- name: Export dependencies
run: |
poetry export --with tests -f requirements.txt -o requirements.txt --without-hashes
cat requirements.txt
- name: Upload artifact
uses: actions/upload-artifact@v3
with:
name: requirements-file
path: requirements.txt
retention-days: 1
unittest:
name: Unit tests
runs-on:
- self-hosted
- gpu
defaults:
run:
shell: bash -l {0}
needs: requirements
steps:
- name: Set up Git repository
uses: actions/checkout@v4
with:
fetch-depth: 0
lfs: false
- name: Download requirements file
uses: actions/download-artifact@v3
with:
name: requirements-file
- name: Cache conda
uses: actions/cache@v2
env:
CACHE_NUMBER: 0
with:
path: ~/conda_pkgs_dir
key: ${{ runner.os }}-conda-${{ env.CACHE_NUMBER }}-${{ hashFiles('**/poetry.lock') }}
- uses: conda-incubator/setup-miniconda@v2
with:
miniconda-version: "latest"
activate-environment: yasf-env
environment-file: yasf-env-test.yml
use-only-tar-bz2: true
auto-activate-base: false
- name: List installed packages with their versions
run: conda list
- name: Running pytest
run: |
pytest -v --cov=yasfpy --cov-report=xml --cov-report=html
coverage xml -i
- name: Upload artifact
uses: actions/upload-artifact@v3
with:
name: coverage-report
path: |
coverage.xml
htmlcov/
retention-days: 7
codacy-coverage-reporter:
runs-on: ubuntu-latest
name: Codacy coverage reporter
needs: unittest
steps:
- name: Set up Git repository
uses: actions/checkout@v4
with:
fetch-depth: 0
lfs: false
- name: Download artifact
uses: actions/download-artifact@v3
with:
name: coverage-report
- name: Run codacy-coverage-reporter
uses: codacy/codacy-coverage-reporter-action@v1
with:
project-token: ${{ secrets.CODACY_PROJECT_TOKEN }}
coverage-reports: ./coverage.xml
deepsource-coverage-reporter:
runs-on: ubuntu-latest
name: DeepSource coverage reporter
needs: unittest
steps:
- name: Set up Git repository
uses: actions/checkout@v4
with:
fetch-depth: 0
lfs: false
- name: Download artifact
uses: actions/download-artifact@v3
with:
name: coverage-report
- name: Report test coverage to DeepSource
uses: deepsourcelabs/test-coverage-action@master
with:
key: python
coverage-file: coverage.xml
dsn: ${{ secrets.DEEPSOURCE_DSN }}