-
Notifications
You must be signed in to change notification settings - Fork 8
144 lines (136 loc) · 4.02 KB
/
check.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
name: check
on:
push:
branches:
- "*"
tags:
- "*"
pull_request:
branches:
- "*"
jobs:
build:
strategy:
matrix:
os:
- ubuntu-latest
- macos-latest
- windows-latest
runs-on: ${{ matrix.os }}
steps:
- name: Checkout
uses: actions/checkout@v4
with:
submodules: true
- uses: actions-rs/toolchain@v1
with:
toolchain: stable
override: true
components: clippy, rustfmt
- name: Check format
run: cargo fmt --all -- --check
- name: Check fix
run: cargo fix && cargo fix
- name: Check with clippy
run: cargo clippy --all -- -D warnings
- name: Build Release
run: cargo build --release
# build on nightly
- uses: actions-rs/toolchain@v1
with:
toolchain: nightly
override: true
- name: Build on nightly
run: cargo build --release
# wasm check
- uses: jetli/[email protected]
with:
version: latest
- name: Setup wasm-pack
run: |
cargo b
wasm-pack build --target bundler
wasm-pack build --target web
working-directory: ./playground/wasm
test:
strategy:
matrix:
rust: [ stable, beta, nightly ]
runs-on: ubuntu-latest
needs: [ build ]
steps:
- name: Setup Rust
uses: hecrj/setup-rust-action@v2
with:
rust-version: ${{ matrix.rust }}
- name: Install Tarpaulin
uses: actions-rs/[email protected]
with:
crate: cargo-tarpaulin
version: 0.14.2
use-tool-cache: true
- name: Checkout
uses: actions/checkout@v4
- name: Run tests
run: cargo test --all-features --all
- name: Run tests without default features.
run: cargo test --no-default-features
- name: Run examples with deserialize_duration
run: cargo run --example deserialize_duration
- name: Run examples with deserialize_duration_chrono
run: cargo run --example deserialize_duration_chrono
- name: Run examples with deserialize_duration_time
run: cargo run --example deserialize_duration_time
- name: Coverage
if: matrix.rust == 'stable'
run: cargo tarpaulin -o Lcov --output-dir ./coverage
- name: Coveralls
if: matrix.rust == 'stable'
continue-on-error: true
uses: coverallsapp/github-action@master
with:
github-token: ${{ secrets.GITHUB_TOKEN }}
# deploy-pages:
# if: github.actor!= 'dependabot[bot]'
# runs-on: ubuntu-latest
# needs: [ test ]
# steps:
# - name: Checkout repository
# uses: actions/checkout@v4
# - name: Setup Node.js
# uses: actions/setup-node@v4
# with:
# node-version: 18
# - uses: pnpm/action-setup@v4
# name: Install pnpm
# with:
# version: 8
# run_install: false
# - name: Install Rust and wasm-pack
# run: |
# rustup update stable
# cargo +stable install wasm-pack
# - name: Build WebAssembly module with wasm-pack
# run: wasm-pack build --target bundler --out-dir ../site/pkg --release
# working-directory: ./playground/wasm
# - name: Build project
# run: pnpm install && pnpm run build
# working-directory: ./playground/site
# - name: Deploy to GitHub Pages
# uses: peaceiris/actions-gh-pages@v4
# if: ${{github.ref == 'refs/heads/master' }}
# with:
# personal_token: ${{ secrets.GITHUB_TOKEN }}
# publish_dir: ./playground/site/dist
publish-crate:
if: startsWith(github.ref, 'refs/tags/v')
runs-on: ubuntu-latest
needs: [ test ]
steps:
- name: Set up Rust
uses: hecrj/setup-rust-action@v2
- uses: actions/checkout@v4
- name: Publish
shell: bash
run: |
cargo publish --token ${{ secrets.CRATES_GITHUB_TOKEN }}