-
Notifications
You must be signed in to change notification settings - Fork 20
191 lines (156 loc) · 5.69 KB
/
everything.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
184
185
186
187
188
189
190
191
---
name: Run Tests & Publishing
on: [push, pull_request]
jobs:
rustfmt:
name: Check Formatting
runs-on: ubuntu-latest
steps:
- name: Checkout Project
uses: actions/checkout@v4
- name: Setup Rust
uses: dtolnay/rust-toolchain@nightly
with:
components: rustfmt, clippy
- name: Restore Rust Cache
uses: Swatinem/rust-cache@v2
- name: Run cargo fmt -- --check
run: cargo +nightly fmt --all -- --check --unstable-features
lint:
name: Lint
runs-on: ubuntu-latest
steps:
- name: Checkout Project
uses: actions/checkout@v4
- name: Setup Rust
uses: dtolnay/rust-toolchain@stable
with:
components: rustfmt, clippy
- name: Restore Rust Cache
uses: Swatinem/rust-cache@v2
- name: Run cargo clippy
run: cargo clippy --all --all-features
env:
RUSTFLAGS: '--cfg releasing'
test-native-stable:
name: Run Native Tests (Stable)
runs-on: ubuntu-latest
steps:
- name: Checkout Project
uses: actions/checkout@v4
- name: Setup Rust
uses: dtolnay/rust-toolchain@stable
with:
components: rustfmt, clippy
- name: Restore Rust Cache
uses: Swatinem/rust-cache@v2
- name: Run cargo test
run: cargo test --all-features --all
env:
RUSTFLAGS: '--cfg releasing'
test-native-msrv:
name: Run Native Tests (MSRV)
runs-on: ubuntu-latest
steps:
- name: Checkout Project
uses: actions/checkout@v4
- name: Setup Rust
uses: dtolnay/[email protected]
with:
components: rustfmt, clippy
- name: Restore Rust Cache
uses: Swatinem/rust-cache@v2
# We only run tests on core packages, examples can be upgraded to be incompatible of msrv.
- name: Run cargo test
run: |
cargo test --all-features --package stylist-core
cargo test --all-features --package stylist-macros
cargo test --all-features --package stylist
env:
RUSTFLAGS: '--cfg releasing'
test-web:
name: Run Browser Tests
runs-on: ubuntu-latest
steps:
- name: Checkout Project
uses: actions/checkout@v4
- name: Setup Rust
uses: dtolnay/rust-toolchain@stable
with:
targets: wasm32-unknown-unknown
components: rustfmt, clippy
- name: Restore Rust Cache
uses: Swatinem/rust-cache@v2
- name: Setup trunk
uses: jetli/[email protected]
with:
version: 'latest'
- name: Run cargo build --all --target=wasm32-unknown-unknown
run: cargo build --all --target=wasm32-unknown-unknown
env:
RUSTFLAGS: '--cfg releasing'
- name: Install wasm-pack
run: curl https://rustwasm.github.io/wasm-pack/installer/init.sh -sSf | sh
- name: Run Browser Tests
run: |
wasm-pack test --headless --chrome --firefox examples/yew-integration
wasm-pack test --headless --chrome --firefox examples/yew-ssr
publish:
name: Publish to crates.io
runs-on: ubuntu-latest
needs:
- lint
- rustfmt
- test-native-stable
- test-native-msrv
- test-web
if: github.event_name == 'push' && (github.ref == 'refs/heads/master' || startsWith(github.ref, 'refs/tags/'))
steps:
- name: Checkout Project
uses: actions/checkout@v4
with:
fetch-depth: 0
- name: Setup Rust
uses: dtolnay/rust-toolchain@stable
with:
components: rustfmt, clippy
- name: Restore Rust Cache
uses: Swatinem/rust-cache@v2
- name: Run cargo publish --dry-run for stylist-core
if: github.event_name == 'push' && github.ref == 'refs/heads/master'
run: cargo publish --dry-run --manifest-path packages/stylist-core/Cargo.toml
env:
RUSTFLAGS: '--cfg releasing'
- name: Run cargo publish for stylist-core
if: github.event_name == 'push' && startsWith(github.ref, 'refs/tags/')
run: cargo publish --token ${{ secrets.CRATES_IO_TOKEN }} --manifest-path packages/stylist-core/Cargo.toml
env:
RUSTFLAGS: '--cfg releasing'
- name: Wait crates.io to Refresh
run: sleep 30s
shell: bash
# Not possible if stylist-core does not have a compatible version on crates.io
# - name: Run cargo publish --dry-run for stylist-macros
# if: github.event_name == 'push' && github.ref == 'refs/heads/master'
# run: cargo publish --dry-run --manifest-path packages/stylist-macros/Cargo.toml
# env:
# RUSTFLAGS: "--cfg releasing"
- name: Run cargo publish for stylist-macros
if: github.event_name == 'push' && startsWith(github.ref, 'refs/tags/')
run: cargo publish --token ${{ secrets.CRATES_IO_TOKEN }} --manifest-path packages/stylist-macros/Cargo.toml
env:
RUSTFLAGS: '--cfg releasing'
- name: Wait crates.io to Refresh
run: sleep 30s
shell: bash
# Not possible if stylist-core or stylist-macros do not have a compatible version on crates.io
# - name: Run cargo publish --dry-run for stylist
# if: github.event_name == 'push' && github.ref == 'refs/heads/master'
# run: cargo publish --dry-run --manifest-path packages/stylist/Cargo.toml
# env:
# RUSTFLAGS: "--cfg releasing"
- name: Run cargo publish for stylist
if: github.event_name == 'push' && startsWith(github.ref, 'refs/tags/')
run: cargo publish --token ${{ secrets.CRATES_IO_TOKEN }} --manifest-path packages/stylist/Cargo.toml
env:
RUSTFLAGS: '--cfg releasing'