Use cargo nextest (#529)

This PR switches the `linux` job from `cargo test` to `cargo nextest
run` for > 50% time reduction in the test execution step of the CI
pipeline. Also, the "check common non default feature configurations"
step has been moved from the `linux` job to it's own job, to parallelize
the CI pipeline further and reduce the time that CI needs to run to
completion.
This commit is contained in:
Flori 2024-07-24 16:24:26 +02:00 committed by GitHub
commit e8469c8e4f
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
1 changed files with 106 additions and 126 deletions

View File

@ -11,10 +11,8 @@ env:
jobs:
linux:
runs-on: ubuntu-latest
timeout-minutes: 30
steps:
- uses: actions/checkout@v4
- name: Clone spacebar server
@ -23,7 +21,7 @@ jobs:
- uses: actions/setup-node@v4
with:
node-version: 18
cache: 'npm'
cache: "npm"
cache-dependency-path: server/package-lock.json
- name: Prepare and start Spacebar server
run: |
@ -35,17 +33,27 @@ jobs:
with:
cache-all-crates: "true"
prefix-key: "linux"
- name: Build, Test and Publish Coverage
- uses: taiki-e/install-action@nextest
- name: Build, Test with nextest, Publish Coverage
run: |
if [ -n "${{ secrets.COVERALLS_REPO_TOKEN }}" ]; then
if [ "${{github.event.pull_request.head.ref}}" = "main" ]; then
curl -L --proto '=https' --tlsv1.2 -sSf https://raw.githubusercontent.com/cargo-bins/cargo-binstall/main/install-from-binstall-release.sh | bash
cargo binstall --no-confirm cargo-tarpaulin --force
cargo tarpaulin --all-features --avoid-cfg-tarpaulin --tests --verbose --skip-clean --coveralls ${{ secrets.COVERALLS_REPO_TOKEN }} --timeout 120
else
echo "Code Coverage step is skipped on forks!"
cargo build --verbose --all-features
cargo test --verbose --all-features
echo "Code Coverage step is skipped on non-main PRs and PRs from forks."
cargo nextest run --verbose --all-features
fi
else
echo "Code Coverage step is skipped on non-main PRs and PRs from forks."
cargo nextest run --verbose --all-features
fi
linux-non-default-features:
runs-on: ubuntu-latest
timeout-minutes: 10
steps:
- uses: actions/checkout@v4
- name: Check common non-default feature configurations
run: |
echo "No features:"
@ -66,34 +74,6 @@ jobs:
cargo check --features="backend, voice_gateway" --no-default-features
echo "Client + voice gateway:"
cargo check --features="client, voice_gateway" --no-default-features
# wasm-safari:
# runs-on: macos-latest
# steps:
# - uses: actions/checkout@v4
# - name: Clone spacebar server
# run: |
# git clone https://github.com/bitfl0wer/server.git
# - uses: actions/setup-node@v4
# with:
# node-version: 18
# cache: 'npm'
# cache-dependency-path: server/package-lock.json
# - name: Prepare and start Spacebar server
# run: |
# npm install
# npm run setup
# npm run start &
# working-directory: ./server
# - uses: Swatinem/rust-cache@v2
# with:
# cache-all-crates: "true"
# prefix-key: "macos-safari"
# - name: Run WASM tests with Safari, Firefox, Chrome
# run: |
# rustup target add wasm32-unknown-unknown
# curl -L --proto '=https' --tlsv1.2 -sSf https://raw.githubusercontent.com/cargo-bins/cargo-binstall/main/install-from-binstall-release.sh | bash
# cargo binstall --no-confirm wasm-bindgen-cli --version "0.2.88" --force
# SAFARIDRIVER=$(which safaridriver) cargo test --target wasm32-unknown-unknown --no-default-features --features="client, rt" --no-fail-fast
wasm-gecko:
runs-on: ubuntu-latest
timeout-minutes: 30
@ -105,7 +85,7 @@ jobs:
- uses: actions/setup-node@v4
with:
node-version: 18
cache: 'npm'
cache: "npm"
cache-dependency-path: server/package-lock.json
- name: Prepare and start Spacebar server
run: |
@ -134,7 +114,7 @@ jobs:
- uses: actions/setup-node@v4
with:
node-version: 18
cache: 'npm'
cache: "npm"
cache-dependency-path: server/package-lock.json
- name: Prepare and start Spacebar server
run: |