-
Notifications
You must be signed in to change notification settings - Fork 8
148 lines (124 loc) · 3.34 KB
/
pr-validation.yml
File metadata and controls
148 lines (124 loc) · 3.34 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
148
name: PR Validation
on:
pull_request:
branches: [main, develop, dev]
concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true
jobs:
pr-title-check:
name: Validate PR Title
runs-on: ubuntu-latest
timeout-minutes: 5
steps:
- name: Check PR title follows conventional commits
uses: amannn/action-semantic-pull-request@v5
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
types: |
feat
fix
docs
style
refactor
perf
test
build
ci
chore
revert
requireScope: false
subjectPattern: ^(?![A-Z]).+$
subjectPatternError: |
The subject "{subject}" must not start with an uppercase letter.
Use lowercase like: "feat: add new feature"
validate:
name: Lint, Typecheck & Test
runs-on: ubuntu-latest
timeout-minutes: 15
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Setup Node.js
uses: actions/setup-node@v4
with:
node-version: 20
cache: npm
- name: Install npm dependencies
run: npm ci
- name: Lint
run: npm run lint
- name: Typecheck
run: npm run typecheck
- name: Test
run: npm run test
rust-checks:
name: Rust Checks
runs-on: ubuntu-22.04
timeout-minutes: 20
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Install Linux dependencies
run: |
sudo apt-get update
sudo apt-get install -y \
libwebkit2gtk-4.1-dev \
libappindicator3-dev \
librsvg2-dev \
patchelf
- name: Setup Rust
uses: dtolnay/rust-toolchain@stable
with:
components: clippy
- name: Cache Rust
uses: swatinem/rust-cache@v2
with:
workspaces: src-tauri
cache-on-failure: true
- name: Cargo check
working-directory: src-tauri
run: cargo check --all-targets
- name: Cargo test
working-directory: src-tauri
run: cargo test
- name: Cargo clippy
working-directory: src-tauri
run: cargo clippy --all-targets -- -D warnings
rust-windows-check:
name: Rust Windows Smoke Check
runs-on: windows-latest
timeout-minutes: 15
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Setup Rust
uses: dtolnay/rust-toolchain@stable
with:
components: clippy
- name: Cache Rust
uses: swatinem/rust-cache@v2
with:
workspaces: src-tauri
cache-on-failure: true
- name: Cargo check
working-directory: src-tauri
run: cargo check --all-targets
build-check:
name: Verify Tauri Frontend Build
needs: [validate, rust-checks, rust-windows-check]
runs-on: ubuntu-latest
timeout-minutes: 15
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Setup Node.js
uses: actions/setup-node@v4
with:
node-version: 20
cache: npm
- name: Install npm dependencies
run: npm ci
- name: Build Tauri frontend assets
run: npm run build:frontend:tauri