92df5a5425
It's very easy to use new rust features without realizing it since the CI and local development workflows may use the latest rust version. We try to keep some backwards compatibility with rust versions to make packaging easier for some OS-level package-managers like Void Linux's. See #1881. This change runs the "Check" step for the pinned version of rust in the rust-toolchain.toml file as well as the MSRV version in a matrix. In order to bump the MSRV, we need to edit .github/workflows/msrv-rust-toolchain.toml This commit sets the MSRV as 1.60.0 but a later child commit will reduce the MSRV back to 1.57.0. Closes #2482.
128 lines
3 KiB
YAML
128 lines
3 KiB
YAML
name: Build
|
|
on:
|
|
pull_request:
|
|
push:
|
|
branches:
|
|
- master
|
|
schedule:
|
|
- cron: '00 01 * * *'
|
|
|
|
jobs:
|
|
check:
|
|
name: Check
|
|
runs-on: ubuntu-latest
|
|
strategy:
|
|
matrix:
|
|
rust: [stable, msrv]
|
|
steps:
|
|
- name: Checkout sources
|
|
uses: actions/checkout@v3
|
|
|
|
- name: Use MSRV rust toolchain
|
|
if: matrix.rust == 'msrv'
|
|
run: cp .github/workflows/msrv-rust-toolchain.toml rust-toolchain.toml
|
|
|
|
- name: Install stable toolchain
|
|
uses: helix-editor/rust-toolchain@v1
|
|
with:
|
|
profile: minimal
|
|
override: true
|
|
|
|
- uses: Swatinem/rust-cache@v1
|
|
|
|
- name: Run cargo check
|
|
uses: actions-rs/cargo@v1
|
|
with:
|
|
command: check
|
|
|
|
test:
|
|
name: Test Suite
|
|
runs-on: ${{ matrix.os }}
|
|
steps:
|
|
- name: Checkout sources
|
|
uses: actions/checkout@v3
|
|
|
|
- name: Install stable toolchain
|
|
uses: helix-editor/rust-toolchain@v1
|
|
with:
|
|
profile: minimal
|
|
override: true
|
|
|
|
- uses: Swatinem/rust-cache@v1
|
|
|
|
- name: Copy minimal languages config
|
|
run: cp .github/workflows/languages.toml ./languages.toml
|
|
|
|
- name: Cache test tree-sitter grammar
|
|
uses: actions/cache@v3
|
|
with:
|
|
path: runtime/grammars
|
|
key: ${{ runner.os }}-stable-v${{ env.CACHE_VERSION }}-tree-sitter-grammars-${{ hashFiles('languages.toml') }}
|
|
restore-keys: ${{ runner.os }}-stable-v${{ env.CACHE_VERSION }}-tree-sitter-grammars-
|
|
|
|
- name: Run cargo test
|
|
uses: actions-rs/cargo@v1
|
|
with:
|
|
command: test
|
|
args: --workspace
|
|
|
|
strategy:
|
|
matrix:
|
|
os: [ubuntu-latest, macos-latest, windows-latest]
|
|
|
|
lints:
|
|
name: Lints
|
|
runs-on: ubuntu-latest
|
|
steps:
|
|
- name: Checkout sources
|
|
uses: actions/checkout@v3
|
|
|
|
- name: Install stable toolchain
|
|
uses: helix-editor/rust-toolchain@v1
|
|
with:
|
|
profile: minimal
|
|
override: true
|
|
components: rustfmt, clippy
|
|
|
|
- uses: Swatinem/rust-cache@v1
|
|
|
|
- name: Run cargo fmt
|
|
uses: actions-rs/cargo@v1
|
|
with:
|
|
command: fmt
|
|
args: --all -- --check
|
|
|
|
- name: Run cargo clippy
|
|
uses: actions-rs/cargo@v1
|
|
with:
|
|
command: clippy
|
|
args: --all-targets -- -D warnings
|
|
|
|
docs:
|
|
name: Docs
|
|
runs-on: ubuntu-latest
|
|
steps:
|
|
- name: Checkout sources
|
|
uses: actions/checkout@v3
|
|
|
|
- name: Install stable toolchain
|
|
uses: helix-editor/rust-toolchain@v1
|
|
with:
|
|
profile: minimal
|
|
override: true
|
|
|
|
- uses: Swatinem/rust-cache@v1
|
|
|
|
- name: Generate docs
|
|
uses: actions-rs/cargo@v1
|
|
with:
|
|
command: xtask
|
|
args: docgen
|
|
|
|
- name: Check uncommitted documentation changes
|
|
run: |
|
|
git diff
|
|
git diff-files --quiet \
|
|
|| (echo "Run 'cargo xtask docgen', commit the changes and push again" \
|
|
&& exit 1)
|
|
|