-
Notifications
You must be signed in to change notification settings - Fork 114
147 lines (128 loc) · 4.32 KB
/
build.yml
File metadata and controls
147 lines (128 loc) · 4.32 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
141
142
143
144
145
146
147
# This workflow will install Python dependencies, run tests and lint with a variety of Python versions
# For more information see: https://help.github.com/actions/language-and-framework-guides/using-python-with-github-actions
# Derived from stock python-package.yml
name: CI
on: [push, pull_request]
jobs:
linter:
runs-on: ubuntu-latest
strategy:
matrix:
python-version: ["3.x"]
steps:
- uses: actions/checkout@v6
- name: Set up Python ${{ matrix.python-version }}
uses: actions/setup-python@v6
with:
python-version: ${{ matrix.python-version }}
- name: Install dependencies
run: |
python -m pip install --upgrade pip
pip install -r requirements.txt -r test-requirements.txt setuptools
- name: Lint
run: |
pylint --output-format colorized --rcfile .pylintrc \
bugzilla-cli setup.py bugzilla examples tests
test_3_6:
# python 3.6 is for rhel/centos8/sles15 compat
runs-on: ubuntu-latest
container:
image: python:3.6
steps:
- uses: actions/checkout@v6
- name: Install dependencies
run: |
python -m pip install --upgrade pip
pip install pytest
pip install -r requirements.txt -r test-requirements.txt
- name: Test with pytest
run: |
pytest
test:
runs-on: ubuntu-latest
strategy:
matrix:
python-version: ["3.9", "3.10", "3.11", "3.12", "3.13"]
steps:
- uses: actions/checkout@v6
- name: Set up Python ${{ matrix.python-version }}
uses: actions/setup-python@v6
with:
python-version: ${{ matrix.python-version }}
- name: Install dependencies
run: |
python -m pip install --upgrade pip
pip install flake8 pytest pytest-cov
pip install -r requirements.txt -r test-requirements.txt
- name: Lint with flake8
run: |
# stop the build if there are Python syntax errors or undefined names
flake8 . --count --select=E9,F63,F7,F82 --show-source --statistics
# exit-zero treats all errors as warnings. The GitHub editor is 127 chars wide
flake8 . --count --exit-zero --max-complexity=10 --max-line-length=127 --statistics
- name: Test with pytest and generate coverage report
run: |
pytest --cov --cov-report=xml
- name: Upload coverage to Codecov
uses: codecov/codecov-action@v5
with:
token: ${{ secrets.CODECOV_TOKEN }}
# Run functional tests
integration:
runs-on: ubuntu-latest
services:
mariadb:
image: mariadb:latest
env:
MARIADB_USER: bugs
MARIADB_DATABASE: bugs
MARIADB_PASSWORD: secret
MARIADB_ROOT_PASSWORD: supersecret
ports:
- 3306:3306
bugzilla:
image: ghcr.io/crazyscientist/bugzilla:test
ports:
- 80:80
strategy:
matrix:
python-version: ["3.x"]
steps:
- uses: actions/checkout@v6
- name: Install MariaDB utils
run: sudo apt install --no-install-recommends -q -y mariadb-client
- name: Restore DB dump
run: mariadb -h 127.0.0.1 -P 3306 --password=secret -u bugs bugs < tests/services/bugs.sql
- name: Store API key
run: |
mkdir -p ~/.config/python-bugzilla/
cp tests/services/bugzillarc ~/.config/python-bugzilla/
- name: Set up Python ${{ matrix.python-version }}
uses: actions/setup-python@v6
with:
python-version: ${{ matrix.python-version }}
- name: Install dependencies
run: |
python -m pip install --upgrade pip
pip install pytest pytest-cov
pip install -r requirements.txt -r test-requirements.txt
- name: Test with pytest
run: pytest --ro-integration --rw-integration
env:
BUGZILLA_URL: http://localhost
# Build and install on Windows
windows:
runs-on: windows-latest
strategy:
matrix:
python-version: ["3.x"]
steps:
- uses: actions/checkout@v6
- name: Set up Python ${{ matrix.python-version }}
uses: actions/setup-python@v6
with:
python-version: ${{ matrix.python-version }}
- name: Build tarball & install
run: |
python setup.py sdist
pip install --find-links dist python-bugzilla