-
Notifications
You must be signed in to change notification settings - Fork 0
130 lines (114 loc) · 3.56 KB
/
Copy pathpublish.yml
File metadata and controls
130 lines (114 loc) · 3.56 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
name: CI & Publish
on:
push:
branches: [master, develop]
pull_request:
branches: [master]
release:
types: [published]
permissions:
contents: read
jobs:
test:
name: Test Python ${{ matrix.python-version }}
runs-on: ubuntu-latest
strategy:
fail-fast: true
matrix:
python-version: ["3.11", "3.12"]
steps:
- uses: actions/checkout@v6
- name: Set up Python ${{ matrix.python-version }}
uses: actions/setup-python@v6
with:
python-version: ${{ matrix.python-version }}
cache: pip
- name: Install system dependencies
run: |
sudo apt-get update
sudo apt-get install -y libcairo2-dev pkg-config
- name: Install dependencies
run: |
python -m pip install --upgrade pip
pip install -e .[dev,svg,ai]
- name: Lint with ruff (check)
run: ruff check . --output-format=github
- name: Lint with ruff (format)
run: ruff format --check .
- name: Type check with mypy
run: mypy src/
- name: Test with pytest
run: pytest -v --cov=src/ --cov-report=term-missing --cov-report=xml --cov-fail-under=75
- name: CLI Smoke test
run: cf-report --help
- name: Upload coverage report
uses: codecov/codecov-action@v6
with:
token: ${{ secrets.CODECOV_TOKEN }}
files: ./coverage.xml
fail_ci_if_error: false
build:
name: Build distribution 📦
needs: [test]
if: github.event_name == 'release' || github.event_name == 'push'
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v6
with:
persist-credentials: false
fetch-depth: 0
- name: Set up Python
uses: actions/setup-python@v6
with:
python-version: "3.12"
- name: Install pypa/build
run: python3 -m pip install build --user
- name: Build a binary wheel and a source tarball
run: python3 -m build
- name: Verify package metadata
run: |
python3 -m pip install twine --user
python3 -m twine check dist/*
- name: Store the distribution packages
uses: actions/upload-artifact@v7
with:
name: python-package-distributions
path: dist/
publish-to-pypi:
name: Publish Python 🐍 distribution 📦 to PyPI
if: github.event_name == 'release' && github.event.action == 'published'
needs: [build]
runs-on: ubuntu-latest
environment:
name: pypi
url: https://pypi.org/p/cloudflare-executive-report
permissions:
id-token: write
steps:
- name: Download all the dists
uses: actions/download-artifact@v8
with:
name: python-package-distributions
path: dist/
- name: Publish distribution 📦 to PyPI
uses: pypa/gh-action-pypi-publish@release/v1
publish-to-testpypi:
name: Publish Python 🐍 distribution 📦 to TestPyPI
if: github.event_name == 'push' && github.ref == 'refs/heads/develop'
needs: [build]
runs-on: ubuntu-latest
environment:
name: testpypi
url: https://test.pypi.org/p/cloudflare-executive-report
permissions:
id-token: write
steps:
- name: Download all the dists
uses: actions/download-artifact@v8
with:
name: python-package-distributions
path: dist/
- name: Publish distribution 📦 to TestPyPI
uses: pypa/gh-action-pypi-publish@release/v1
with:
repository-url: https://test.pypi.org/legacy/