Repository navigation
134 lines (120 loc) · 4.32 KB
/
Copy pathtests.yaml
File metadata and controls
134 lines (120 loc) · 4.32 KB
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
name: Test Suite
on:
push:
branches:
- develop
pull_request_target:
jobs:
test_rust:
name: Test Rust
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
name: Checkout source
- uses: actions-rust-lang/setup-rust-toolchain@v1
name: Setup Rust
- uses: actions/cache@v3
name: Setup Cache
with:
path: |
~/.cargo/bin/
~/.cargo/registry/index/
~/.cargo/registry/cache/
~/.cargo/git/db/
target/
simd-target/
key: ${{ runner.os }}-cargo-${{ hashFiles('**/Cargo.lock') }}
- name: Run Rust tests
run: |
rustup component add llvm-tools-preview
cargo install --force grcov
npm install -g mocha
npm ci
cargo clean
cargo test
grcov . --binary-path ./target/debug -s . -t lcov --branch -o ./coverage.lcov
env:
RUSTFLAGS: -Cinstrument-coverage
LLVM_PROFILE_FILE: '%p-%m.profraw'
- name: Publish coverage report
uses: codecov/codecov-action@v3
with:
file: ./coverage.lcov
test_node:
name: Test (Node.JS ${{ matrix.node_version }})
runs-on: ubuntu-latest
strategy:
matrix:
node_version: [16, 18, 20, 22]
fail-fast: false
steps:
- uses: actions/checkout@v4
name: Checkout source
- uses: actions-rust-lang/setup-rust-toolchain@v1
name: Setup Rust
- uses: actions/cache@v3
name: Setup Cache
with:
path: |
~/.cargo/bin/
~/.cargo/registry/index/
~/.cargo/registry/cache/
~/.cargo/git/db/
target/
simd-target/
key: ${{ runner.os }}-wasm-cargo-${{ hashFiles('**/Cargo.lock') }}
- name: Get npm cache directory
id: npm-cache-dir
shell: bash
run: echo "dir=$(npm config get cache)" >> ${GITHUB_OUTPUT}
- uses: actions/cache@v3
with:
path: ${{ steps.npm-cache-dir.outputs.dir }}
key: ${{ runner.os }}-node-${{ hashFiles('**/package-lock.json') }}
- uses: actions/setup-node@v3
name: Setup Node.JS
with:
node-version: ${{ matrix.node_version }}
- name: Run WASM tests
run: |
cargo install wasm-pack --force
cargo clean
npm install -g mocha
npm ci
npm test
publish:
name: Publish
runs-on: ubuntu-latest
needs:
- test_node
- test_rust
steps:
- uses: actions/checkout@v4
- uses: actions-rust-lang/setup-rust-toolchain@v1
name: Setup Rust
- name: Setup node
uses: actions/setup-node@v3
with:
node-version: 18
check-latest: true
- name: Install dependencies
run: |
npm ci
cargo install wasm-pack --force
cargo clean
- name: Publish
run: |
if git log -1 --pretty=%B | grep "^[0-9]\+\.[0-9]\+\.[0-9]\+$";
then
echo "//registry.npmjs.org/:_authToken=$NPM_TOKEN" >> ~/.npmrc
npm publish --access public
elif git log -1 --pretty=%B | grep "^[0-9]\+\.[0-9]\+\.[0-9]\+";
then
echo "//registry.npmjs.org/:_authToken=$NPM_TOKEN" >> ~/.npmrc
npm publish --tag next --access public
else
echo "Not a release, skipping publish"
fi
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
NPM_TOKEN: ${{ secrets.NPM_TOKEN }}