CI #154
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# Working example showing how to use nextest to reuse builds and partition test runs on GitHub Actions. | |
# See workflow runs at https://github.com/nextest-rs/reuse-build-partition-example/actions/workflows/ci.yml. | |
name: CI | |
on: | |
pull_request: | |
branches: [main] | |
push: | |
branches: [main] | |
schedule: | |
# Run this every day at 01:00 UTC. | |
- cron: 0 1 * * * | |
env: | |
CARGO_TERM_COLOR: always | |
jobs: | |
build-test-artifacts: | |
name: Build test artifacts | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v4 | |
with: | |
# By default actions/checkout checks out a merge commit. Check out the PR head instead. | |
# https://github.com/actions/checkout#checkout-pull-request-head-commit-instead-of-merge-commit | |
ref: ${{ github.event.pull_request.head.sha }} | |
- uses: actions-rs/toolchain@v1 | |
with: | |
toolchain: stable | |
override: true | |
- name: Install nextest | |
uses: taiki-e/install-action@nextest | |
- name: Build and archive tests | |
run: cargo nextest archive --archive-file nextest-archive.tar.zst | |
- name: Upload archive to workflow | |
uses: actions/upload-artifact@v4 | |
with: | |
name: nextest-archive | |
path: nextest-archive.tar.zst | |
run-tests-partitioned: | |
name: Run tests with partitioning | |
runs-on: ubuntu-latest | |
needs: build-test-artifacts | |
strategy: | |
matrix: | |
partition: [1, 2] | |
steps: | |
# The source directory must be checked out. | |
- uses: actions/checkout@v4 | |
with: | |
# By default actions/checkout checks out a merge commit. Check out the PR head instead. | |
# https://github.com/actions/checkout#checkout-pull-request-head-commit-instead-of-merge-commit | |
ref: ${{ github.event.pull_request.head.sha }} | |
# In this example, the Rust toolchain is not installed. cargo nextest's run phase does not | |
# require Cargo. You can choose to install Rust if your tests require it, of course. | |
# Instead, create ~/.cargo/bin as required by the install action. | |
- run: mkdir -p ~/.cargo/bin | |
- name: Install nextest | |
uses: taiki-e/install-action@nextest | |
- name: Download archive | |
uses: actions/download-artifact@v4 | |
with: | |
name: nextest-archive | |
- name: Run tests | |
run: | | |
~/.cargo/bin/cargo-nextest nextest run --archive-file nextest-archive.tar.zst \ | |
--partition count:${{ matrix.partition }}/2 |