-
Notifications
You must be signed in to change notification settings - Fork 20
177 lines (146 loc) · 5.32 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
---
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:
name: Run Native Tests
runs-on: ubuntu-latest
strategy:
fail-fast: false
matrix:
toolchain:
- 1.76.0
- stable
- nightly
steps:
- name: Checkout Project
uses: actions/checkout@v4
- name: Setup Rust
uses: dtolnay/rust-toolchain@stable
with:
toolchain: ${{ matrix.toolchain }}
components: rustfmt, clippy
- name: Restore Rust Cache
uses: Swatinem/rust-cache@v2
- name: Run cargo test
run: |
cargo test -p stylist --features debug_style_locations,parser,yew_integration,yew_use_media_query,yew_use_style,ssr,hydration
cargo test -p stylist-core --all-features
cargo test -p stylist-macros --all-features
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
- 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'