-
Notifications
You must be signed in to change notification settings - Fork 1
executable file
·150 lines (129 loc) · 3.94 KB
/
python-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
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
150
name: Checks
on:
push:
paths-ignore:
- "**.css"
- "**.js"
- "**.md"
branches:
- main
pull_request:
paths-ignore:
- "**.css"
- "**.js"
- "**.md"
jobs:
test-coverage:
name: Test Coverage (Python ${{ matrix.python-version }} DB ${{ matrix.database }})
runs-on: ubuntu-latest
services:
database:
image: ${{ matrix.database }}
env:
MYSQL_ROOT_PASSWORD: temp_password_aa_tox_tests
MYSQL_DATABASE: tox_allianceauth
ports:
- 3306:3306
options: --tmpfs /var/lib/mysql
redis:
image: redis
options: >-
--health-cmd "redis-cli ping"
--health-interval 10s
--health-timeout 5s
--health-retries 5
ports:
# Maps port 6379 on service container to the host
- 6379:6379
strategy:
matrix:
python-version:
- "3.8"
- "3.9"
- "3.10"
- "3.11"
- "3.12"
database:
# https://endoflife.date/mysql
- mysql:8.0 # [LTS] Maintained until: 30 Apr 2026
- mysql:8.3 # Latest official release
# https://endoflife.date/mariadb and https://mariadb.com/kb/en/mariadb-server-release-dates/
- mariadb:10.6 # [LTS] Maintained until: July 2026
- mariadb:10.11 # [LTS] Maintained until: February 2028
- mariadb:11.3 # Latest official release
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Setup Python ${{ matrix.python-version }}
uses: actions/setup-python@v5
with:
python-version: ${{ matrix.python-version }}
check-latest: true
- name: Install Tox and any other packages
run: |
python -m pip install --upgrade pip
python -m pip install --upgrade tox tox-gh-actions
- name: Run Tox
env:
AA_DB_HOST: 127.0.0.1
AA_DB_NAME: tox_allianceauth
AA_DB_USER: root
AA_DB_PASSWORD: temp_password_aa_tox_tests
AA_REDIS: "localhost:6379"
run: tox -v
- name: Create report name
env:
COVERAGE_REPORT_NAME: "coverage-${{ matrix.python-version }}-${{ matrix.database }}"
run: |
COVERAGE_REPORT_NAME=${COVERAGE_REPORT_NAME//:/_}
echo "COVERAGE_REPORT_NAME=${COVERAGE_REPORT_NAME}" >> $GITHUB_ENV
echo "COVERAGE_REPORT_NAME=${COVERAGE_REPORT_NAME}"
- name: Upload Coverage Artifact
uses: actions/upload-artifact@v4
with:
name: ${{ env.COVERAGE_REPORT_NAME }}
path: coverage.xml
if-no-files-found: ignore
upload-coverage:
name: Upload to Codecov
runs-on: ubuntu-latest
needs: [test-coverage]
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Download artifacts
uses: actions/download-artifact@v4
with:
path: artifacts
- name: Upload Coverage to Codecov
uses: codecov/codecov-action@v4
with:
token: ${{ secrets.CODECOV_TOKEN }} # not required for public repos but fails for rate limits
directory: artifacts
fail_ci_if_error: true # optional (default = false)
verbose: true # optional (default = false)
build-test:
name: PyPi Build Test
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Setup Python 3
uses: actions/setup-python@v5
with:
python-version: "3.x"
check-latest: true
- name: Install Tools
run: |
python -m pip install -U pip
pip install -U build
- name: Package Build
env:
STACKMANAGER_VERSION: 9999
run: python -m build
- name: Upload Build Artifact
uses: actions/upload-artifact@v4
with:
name: build
path: dist
if-no-files-found: ignore