-
Notifications
You must be signed in to change notification settings - Fork 1
96 lines (80 loc) · 2.63 KB
/
test.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
name: tests
on:
workflow_dispatch:
push:
branches:
- main
- dev
jobs:
test:
name: Build and test on ${{ matrix.operating-system }} with Python ${{ matrix.python-version }}
strategy:
matrix:
python-version: ["3.7", "3.8", "3.9", "3.10"]
operating-system: [windows-latest, ubuntu-latest]
runs-on: ${{ matrix.operating-system }}
steps:
- name: Checkout
uses: actions/checkout@v3
- name: Setup Python ${{ matrix.python-version }}
uses: actions/setup-python@v4
with:
python-version: ${{ matrix.python-version }}
- name: Install dependencies
run: |
python3 -m pip install --upgrade pip
pip install --upgrade './[dev]'
- name: Check code and formatting
run: scripts/check-python.sh great_ai tests
- name: Run tests
run: python3 -m pytest --doctest-modules --cov=. --cov-report=xml --junit-xml pytest.xml --asyncio-mode=strict || true
- name: Upload results
if: always()
uses: actions/upload-artifact@v3
with:
name: Unit test coverage (Python ${{ matrix.python-version }} - ${{ matrix.operating-system }})
path: "*.xml"
sonar:
name: Analyse Python project with SonarQube
needs: test
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v3
with:
fetch-depth: 0
- name: Install dependencies
run: |
python -m pip install --upgrade pip
pip install --upgrade .
rm -rf build
- name: Download test results
uses: actions/download-artifact@v3
with:
path: artifacts
- uses: sonarsource/sonarqube-scan-action@master
env:
SONAR_TOKEN: ${{ secrets.SONAR_TOKEN }}
SONAR_HOST_URL: ${{ secrets.SONAR_HOST_URL }}
with:
args: >
-Dsonar.projectKey=great-ai
-Dsonar.login=${{ secrets.SONAR_TOKEN }}
-Dsonar.verbose=true
-Dsonar.python.coverage.reportPaths=artifacts/*/coverage.xml
-Dsonar.coverage.exclusions=**/external/**/*
-Dsonar.exclusions=**/external/**/*,artifacts/**/*
publish-test-results:
name: Publish unit test results
needs: test
runs-on: ubuntu-latest
if: always()
steps:
- name: Download artifacts
uses: actions/download-artifact@v3
with:
path: artifacts
- name: Publish results
uses: EnricoMi/publish-unit-test-result-action@v2
with:
files: artifacts/*/pytest.xml