This repository has been archived by the owner on Oct 21, 2023. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 2
183 lines (160 loc) · 5.08 KB
/
ci.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
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
name: Run CI
on:
workflow_dispatch:
push:
branches:
- "master"
pull_request:
env:
RELEASE: ${{ github.event_name == 'workflow_dispatch' }}
jobs:
lint-python:
name: Lint Python
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/setup-python@v4
with:
python-version: 3.8
- name: Run Black
uses: psf/black@stable
- name: Run ISort
uses: isort/isort-action@v1
lint-rust:
name: Lint Rust
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
with:
fetch-depth: 0
- name: Install Rust nightly
uses: dtolnay/rust-toolchain@nightly
with:
components: rustfmt, clippy
- name: Run cargo fmt
run: cargo fmt --all -- --check
- name: Run cargo clippy
run: cargo clippy -- -D warnings
- name: "Cocogitto: Check Conventional Commit"
run: |
curl -L --proto '=https' --tlsv1.2 -sSf https://raw.githubusercontent.com/cargo-bins/cargo-binstall/main/install-from-binstall-release.sh | bash
cargo binstall --no-confirm --version 5.4.0 cocogitto
cog check --ignore-merge-commits
build-docs:
name: Build Documentation
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: pdm-project/setup-pdm@v3
name: Setup PDM
- name: Install Dependencies
run: pdm install --no-self
- name: MkDocs Build
run: pdm run build-docs
env:
OFFLINE: false
- name: Upload Artifact
uses: actions/upload-artifact@v3
with:
name: docs
path: build
build-matrix:
name: Create Build Matrix
runs-on: ubuntu-latest
outputs:
matrix: ${{ steps.configure.outputs.matrix }}
steps:
- uses: actions/checkout@v4
- uses: actions/setup-python@v4
with:
python-version: 3.11
- name: Install Actions Toolkit
run: pip install actions_toolkit
- name: Configure Build Matrix
id: configure
run: python ./.github/scripts/gen_matrix.py
build:
name: Build
needs: [build-matrix]
strategy:
fail-fast: false
matrix: ${{ fromJSON( needs.build-matrix.outputs.matrix ) }}
runs-on: ${{ matrix.os }}
steps:
- uses: actions/checkout@v4
- uses: actions/setup-python@v4
with:
python-version: 3.8
architecture: ${{ matrix.py_arch || 'x64' }}
- name: Install Dependencies
run: |
pip install tomlkit
pip install actions_toolkit
- name: Bump Dev Version
if: ${{ env.RELEASE != 'true' }}
run: python ./.github/scripts/bump_cargo_version.py
- name: Build Wheel
id: build-wheel
uses: PyO3/maturin-action@v1
with:
rust-toolchain: nightly
command: ${{ matrix.build_cmd }}
target: ${{ matrix.target }}
manylinux: ${{ matrix.manylinux }}
args: ${{ matrix.build_args }}
sccache: true
- name: Upload wheels - Packed
if: ${{ steps.build-wheel.outcome == 'success' }}
uses: actions/upload-artifact@v3
with:
name: wheels
path: dist
- name: Upload wheels - Unpacked
if: ${{ steps.build-wheel.outcome == 'success' }}
uses: actions/upload-artifact@v3
with:
name: ${{ matrix.name }}
path: dist
release:
name: Release
runs-on: ubuntu-latest
if: ${{ github.event_name == 'workflow_dispatch' }}
needs: [lint-python, lint-rust, build, build-docs]
environment: release
permissions: write-all
steps:
- uses: actions/checkout@v4
- uses: pdm-project/setup-pdm@v3
name: Setup PDM
- name: Install Dependencies
run: pdm install --no-self
- name: Download Built Wheels
uses: actions/download-artifact@v3
with:
name: wheels
path: dist
- name: Build Offline Docs
run: pdm run build-docs
- name: Compress Documentation Archive
run: zip -9 ./docs.zip -r ./build
- name: Export Version
run: pdm run python ./.github/scripts/extract_version.py
- name: Config Git
run: |
git config advice.addIgnoredFile false
git config user.name github-actions[bot]
git config user.email github-actions[bot]@users.noreply.github.com
- name: Build And Release
run: |
pdm run towncrier build --version $VERSION --keep --config ./towncrier_release.toml
cat ./release-notes.md
pdm run towncrier build --version $VERSION --yes
pdm run pre-commit run --all-files --show-diff-on-failure || true
git add .
git diff-index --quiet HEAD || git commit -m "chore(release): $VERSION"
git push
gh release create "$VERSION" dist/* "./docs.zip#Documentation Archive" --notes-file ./release-notes.md --title "$VERSION"
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
- name: Publish to PyPI
run: pdm publish --no-build