-
Notifications
You must be signed in to change notification settings - Fork 10
147 lines (141 loc) · 4.32 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
name: CI
on:
push:
branches:
- main
tags:
- v*
pull_request:
workflow_dispatch:
jobs:
lint:
name: Lint
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Get toolchain
id: toolchain
uses: ./.github/actions/get-toolchain
- name: Setup Rust
uses: hecrj/setup-rust-action@v2
with:
rust-version: ${{ steps.toolchain.outputs.channel }}
targets: wasm32-unknown-unknown
- name: Install cargo binstall
uses: cargo-bins/cargo-binstall@main
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
- name: Cache dependencies
uses: actions/cache@v4
with:
path: |
~/.cargo/registry
~/.cargo/git
target
key: ${{ runner.os }}-cargo-${{ hashFiles('**/Cargo.toml') }}-${{ hashFiles('**/Cargo.lock') }}-${{ hashFiles('**/Makefile.toml') }}
- name: Install cargo-make
run: cargo binstall -y cargo-make
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
- name: Lint
run: cargo make lint
build-example:
name: Build example
runs-on: ubuntu-latest
strategy:
fail-fast: false
matrix:
include:
- example: demo
builder: trunk
- example: ssr-demo
builder: cargo-leptos
steps:
- uses: actions/checkout@v4
- name: Get toolchain
id: toolchain
uses: ./.github/actions/get-toolchain
- name: Setup Rust
uses: hecrj/setup-rust-action@v2
with:
rust-version: ${{ steps.toolchain.outputs.channel }}
targets: wasm32-unknown-unknown
- name: Install cargo binstall
uses: cargo-bins/cargo-binstall@main
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
- name: Install builder
run: cargo binstall -y ${{ matrix.builder }}
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
- name: Cache dependencies
uses: actions/cache@v4
with:
path: |
~/.cargo/registry
~/.cargo/git
target
key: ${{ runner.os }}-cargo-${{ matrix.example }}-${{ matrix.builder }}-${{ hashFiles('**/Cargo.toml') }}-${{ hashFiles('**/Cargo.lock') }}-${{ hashFiles('**/Makefile.toml') }}
- name: Build with trunk
if: ${{ matrix.builder == 'trunk' }}
run: |
cd examples/${{ matrix.example }}
trunk build --release
- name: Build with cargo-leptos
if: ${{ matrix.builder == 'cargo-leptos' }}
run: |
cd examples/${{ matrix.example }}
cargo leptos build --release
test-release-leptos-hotkeys:
if: startsWith(github.ref, 'refs/tags/') || github.ref == 'refs/heads/main'
name: Test leptos-hotkeys release
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Setup Rust
uses: hecrj/setup-rust-action@v2
- name: Publish
run: |
cargo login ${{ secrets.CRATES_TOKEN }}
cargo publish --dry-run -v -p leptos_hotkeys
release-leptos-hotkeys:
if: startsWith(github.ref, 'refs/tags/')
name: Release leptos-hotkeys
needs:
- lint
- build-example
- test-release-leptos-hotkeys
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Setup Rust
uses: hecrj/setup-rust-action@v2
- name: Publish
run: |
cargo login ${{ secrets.CRATES_TOKEN }}
cargo publish -v -p leptos_hotkeys
create-release:
if: startsWith(github.ref, 'refs/tags/')
name: Create release
needs: release-leptos-hotkeys
runs-on: ubuntu-latest
permissions:
contents: write
steps:
- uses: actions/checkout@v4
- name: Get tag metadata
id: tag
run: |
TAG_TITLE=${GITHUB_REF#refs/*/}
echo "title=$TAG_TITLE" >> $GITHUB_OUTPUT
- name: Create release
uses: softprops/action-gh-release@v2
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
name: ${{ steps.tag.outputs.title }}
tag_name: ${{ steps.tag.outputs.title }}
body: |
See [CHANGELOG](https://github.com/gaucho-labs/leptos-hotkeys/blob/main/CHANGELOG.md).
draft: false
prerelease: false