-
Notifications
You must be signed in to change notification settings - Fork 123
154 lines (128 loc) · 3.99 KB
/
test.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
name: Test
on:
push:
branches: [main]
pull_request:
branches: [main]
env:
CARGO_TERM_COLOR: always
WASM_PACK_VERSION: "v0.10.3"
jobs:
test:
name: Test
runs-on: ${{matrix.os}}
defaults:
run:
shell: bash
strategy:
fail-fast: false
matrix:
include:
- build: linux
os: ubuntu-latest
rust: beta
target: x86_64-unknown-linux-musl
cross: false
- build: macos
os: macos-latest
rust: beta
target: x86_64-apple-darwin
cross: false
- build: windows
os: windows-latest
rust: beta
target: x86_64-pc-windows-msvc
cross: false
steps:
- name: Checkout repository
uses: actions/checkout@v4
with:
fetch-depth: 1
- name: Cache
uses: actions/cache@v4
with:
path: |
~/.cargo/registry
~/.cargo/git
~/.rustup
target
key: ${{ runner.os }}-${{ matrix.rust }}-min165
- uses: actions/setup-node@v4
with:
node-version: 20
- name: Install Rust
uses: actions-rs/toolchain@v1
with:
toolchain: ${{ matrix.rust }}
target: ${{ matrix.target }}
override: true
default: true
components: rustfmt, clippy
- name: Check versions
run: |
cargo --version
rustc --version
- name: Install wasm-pack
uses: jetli/[email protected]
with:
version: ${{env.WASM_PACK_VERSION}}
- name: Build Coupled JS
working-directory: ./pagefind_web_js
run: npm i && npm run build-coupled
- name: Build WASM
working-directory: ./pagefind_web
run: ./local_build.sh
- name: Build UI
working-directory: ./pagefind_ui/default
run: npm i && npm run build
- name: Build Modular UI
working-directory: ./pagefind_ui/modular
run: npm i && npm run build
- name: Test Web
working-directory: ./pagefind_web
run: cargo test --release
- name: Build Testing Binary
working-directory: ./pagefind
run: cargo build --release --features extended
- name: Upload Testing Binary
uses: actions/upload-artifact@v4
with:
name: pagefind-${{ matrix.target }}
path: target/release/pagefind${{ matrix.build == 'windows' && '.exe' || '' }}
- name: Test Lib
working-directory: ./pagefind
run: cargo test --release --lib --features extended
- name: Test CLI
run: ./test_ci.sh "release"
- name: Set up python 3.12
uses: actions/setup-python@v5
with:
python-version: "3.12"
# NOTE: ^this strategy leaves older python versions intentionally
# without test coverage to keep CI fast.
- name: Set up poetry
run: ./wrappers/python/scripts/ci/github/setup_poetry.sh
- name: cache venv
uses: actions/cache@v4
with:
path: wrappers/python/.venv
key: ${{ runner.os }}-poetry-3.12-${{ hashFiles('**/poetry.lock') }}
- name: Install dev dependencies
run: ./wrappers/python/scripts/ci/github/install_dev_dependencies.sh
- name: debug python paths
run: ./wrappers/python/scripts/ci/github/debug_python_paths.sh
- name: Lint python
working-directory: ./wrappers/python
run: |
export VIRTUAL_ENV="$PWD/.venv"
export PATH="$VIRTUAL_ENV/bin:$PATH"
bash ./scripts/ci/python_lints.sh
- name: ensure cog up-to-date
working-directory: ./wrappers/python
run: |
export VIRTUAL_ENV="$PWD/.venv"
export PATH="$VIRTUAL_ENV/bin:$PATH"
./scripts/ci/cog/check.sh
- name: Test python API
timeout-minutes: 1
run: ./wrappers/python/scripts/ci/github/integration_tests.sh