Rust library to generate static websites
1name: CI
2
3on:
4 workflow_dispatch:
5 push:
6 branches:
7 - main
8
9 pull_request:
10
11# Automatically cancel older in-progress jobs on the same branch
12concurrency:
13 group: ${{ github.workflow }}-${{ github.event_name == 'pull_request_target' && github.head_ref || github.ref }}
14 cancel-in-progress: true
15defaults:
16 run:
17 shell: bash
18
19env:
20 RUSTFLAGS: "-Dwarnings"
21
22jobs:
23 lint:
24 runs-on: ubuntu-latest
25 steps:
26 - name: Checkout
27 uses: actions/checkout@v4
28
29 - name: Setup Rust
30 uses: moonrepo/setup-rust@v1
31 with:
32 components: clippy
33
34 - name: Setup pnpm
35 uses: pnpm/action-setup@v4
36
37 - name: Setup Node.js
38 uses: actions/setup-node@v4
39 with:
40 node-version: latest
41 cache: 'pnpm'
42
43 - name: Install dependencies
44 run: pnpm install
45
46 - name: Build JS dependencies
47 run: cargo xtask build-js
48
49 - name: Run Clippy
50 run: cargo clippy --all-targets --all-features
51
52 build:
53 name: Build
54 runs-on: ubuntu-latest
55 steps:
56 - name: Checkout
57 uses: actions/checkout@v4
58
59 - name: Setup Rust
60 uses: moonrepo/setup-rust@v1
61
62 - name: Setup pnpm
63 uses: pnpm/action-setup@v4
64
65 - name: Setup Node.js
66 uses: actions/setup-node@v4
67 with:
68 node-version: latest
69 cache: 'pnpm'
70
71 - name: Install dependencies
72 run: pnpm install
73
74 - name: Build JS dependencies
75 run: cargo xtask build-js
76
77 - name: Build
78 run: cargo build
79
80 e2e:
81 name: Test (E2E)
82 runs-on: ubuntu-latest
83 steps:
84 - name: Checkout
85 uses: actions/checkout@v4
86
87 - name: Setup Rust
88 uses: moonrepo/setup-rust@v1
89
90 - name: Setup pnpm
91 uses: pnpm/action-setup@v4
92
93 - name: Setup Node.js
94 uses: actions/setup-node@v4
95 with:
96 node-version: latest
97 cache: 'pnpm'
98
99 - name: Install dependencies
100 run: pnpm install
101
102 - name: Build JS dependencies
103 run: cargo xtask build-js
104
105 - name: Build
106 run: cargo build
107
108 - name: Test
109 working-directory: ./e2e
110 run: pnpm playwright install chromium && pnpm test
111
112 test:
113 name: Test
114 runs-on: ubuntu-latest
115 steps:
116 - name: Checkout
117 uses: actions/checkout@v4
118
119 - name: Setup Rust
120 uses: moonrepo/setup-rust@v1
121
122 - name: Setup pnpm
123 uses: pnpm/action-setup@v4
124
125 - name: Setup Node.js
126 uses: actions/setup-node@v4
127 with:
128 node-version: latest
129 cache: 'pnpm'
130
131 - name: Install dependencies
132 run: pnpm install
133
134 - name: Build JS dependencies
135 run: cargo xtask build-js
136
137 - name: Test
138 run: cargo test