From 36e2cba0c756a5887193693826c75b29e0bbb082 Mon Sep 17 00:00:00 2001 From: Michael Davis Date: Sat, 21 May 2022 21:27:08 -0500 Subject: [PATCH] check MSRV in CI 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. --- .github/workflows/build.yml | 63 +++++++++++++--------- .github/workflows/msrv-rust-toolchain.toml | 3 ++ 2 files changed, 40 insertions(+), 26 deletions(-) create mode 100644 .github/workflows/msrv-rust-toolchain.toml diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 364f76d17628c..9e8a2c7652807 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -7,14 +7,25 @@ on: schedule: - cron: '00 01 * * *' +env: + # increment this key to bust the caches + CACHE_VERSION: "1" + 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: @@ -25,22 +36,22 @@ jobs: uses: actions/cache@v3 with: path: ~/.cargo/registry - key: ${{ runner.os }}-v2-cargo-registry-${{ hashFiles('**/Cargo.lock') }} - restore-keys: ${{ runner.os }}-v2-cargo-registry- + key: ${{ runner.os }}-${{ matrix.rust }}-v${{ env.CACHE_VERSION }}-cargo-registry-${{ hashFiles('**/Cargo.lock') }} + restore-keys: ${{ runner.os }}-${{ matrix.rust }}-v${{ env.CACHE_VERSION }}-cargo-registry- - name: Cache cargo index uses: actions/cache@v3 with: path: ~/.cargo/git - key: ${{ runner.os }}-v2-cargo-index-${{ hashFiles('**/Cargo.lock') }} - restore-keys: ${{ runner.os }}-v2-cargo-index- + key: ${{ runner.os }}-${{ matrix.rust }}-v${{ env.CACHE_VERSION }}-cargo-index-${{ hashFiles('**/Cargo.lock') }} + restore-keys: ${{ runner.os }}-${{ matrix.rust }}-v${{ env.CACHE_VERSION }}-cargo-index- - name: Cache cargo target dir uses: actions/cache@v3 with: path: target - key: ${{ runner.os }}-v2-cargo-build-target-${{ hashFiles('**/Cargo.lock') }} - restore-keys: ${{ runner.os }}-v2-cargo-build-target- + key: ${{ runner.os }}-${{ matrix.rust }}-v${{ env.CACHE_VERSION }}-cargo-build-target-${{ hashFiles('**/Cargo.lock') }} + restore-keys: ${{ runner.os }}-${{ matrix.rust }}-v${{ env.CACHE_VERSION }}-cargo-build-target- - name: Run cargo check uses: actions-rs/cargo@v1 @@ -64,22 +75,22 @@ jobs: uses: actions/cache@v3 with: path: ~/.cargo/registry - key: ${{ runner.os }}-v2-cargo-registry-${{ hashFiles('**/Cargo.lock') }} - restore-keys: ${{ runner.os }}-v2-cargo-registry- + key: ${{ runner.os }}-stable-v${{ env.CACHE_VERSION }}-cargo-registry-${{ hashFiles('**/Cargo.lock') }} + restore-keys: ${{ runner.os }}-stable-v${{ env.CACHE_VERSION }}-cargo-registry- - name: Cache cargo index uses: actions/cache@v3 with: path: ~/.cargo/git - key: ${{ runner.os }}-v2-cargo-index-${{ hashFiles('**/Cargo.lock') }} - restore-keys: ${{ runner.os }}-v2-cargo-index- + key: ${{ runner.os }}-stable-v${{ env.CACHE_VERSION }}-cargo-index-${{ hashFiles('**/Cargo.lock') }} + restore-keys: ${{ runner.os }}-stable-v${{ env.CACHE_VERSION }}-cargo-index- - name: Cache cargo target dir uses: actions/cache@v3 with: path: target - key: ${{ runner.os }}-v2-cargo-build-target-${{ hashFiles('**/Cargo.lock') }} - restore-keys: ${{ runner.os }}-v2-cargo-build-target- + key: ${{ runner.os }}-stable-v${{ env.CACHE_VERSION }}-cargo-build-target-${{ hashFiles('**/Cargo.lock') }} + restore-keys: ${{ runner.os }}-stable-v${{ env.CACHE_VERSION }}-cargo-build-target- - name: Copy minimal languages config run: cp .github/workflows/languages.toml ./languages.toml @@ -88,8 +99,8 @@ jobs: uses: actions/cache@v3 with: path: runtime/grammars - key: ${{ runner.os }}-v2-tree-sitter-grammars-${{ hashFiles('languages.toml') }} - restore-keys: ${{ runner.os }}-v2-tree-sitter-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 @@ -119,22 +130,22 @@ jobs: uses: actions/cache@v3 with: path: ~/.cargo/registry - key: ${{ runner.os }}-v2-cargo-registry-${{ hashFiles('**/Cargo.lock') }} - restore-keys: ${{ runner.os }}-v2-cargo-registry- + key: ${{ runner.os }}-stable-v${{ env.CACHE_VERSION }}-cargo-registry-${{ hashFiles('**/Cargo.lock') }} + restore-keys: ${{ runner.os }}-stable-v${{ env.CACHE_VERSION }}-cargo-registry- - name: Cache cargo index uses: actions/cache@v3 with: path: ~/.cargo/git - key: ${{ runner.os }}-v2-cargo-index-${{ hashFiles('**/Cargo.lock') }} - restore-keys: ${{ runner.os }}-v2-cargo-index- + key: ${{ runner.os }}-stable-v${{ env.CACHE_VERSION }}-cargo-index-${{ hashFiles('**/Cargo.lock') }} + restore-keys: ${{ runner.os }}-stable-v${{ env.CACHE_VERSION }}-cargo-index- - name: Cache cargo target dir uses: actions/cache@v3 with: path: target - key: ${{ runner.os }}-v2-cargo-build-target-${{ hashFiles('**/Cargo.lock') }} - restore-keys: ${{ runner.os }}-v2-cargo-build-target- + key: ${{ runner.os }}-stable-v${{ env.CACHE_VERSION }}-cargo-build-target-${{ hashFiles('**/Cargo.lock') }} + restore-keys: ${{ runner.os }}-stable-v${{ env.CACHE_VERSION }}-cargo-build-target- - name: Run cargo fmt uses: actions-rs/cargo@v1 @@ -165,22 +176,22 @@ jobs: uses: actions/cache@v3 with: path: ~/.cargo/registry - key: ${{ runner.os }}-v2-cargo-registry-${{ hashFiles('**/Cargo.lock') }} - restore-keys: ${{ runner.os }}-v2-cargo-registry- + key: ${{ runner.os }}-stable-v${{ env.CACHE_VERSION }}-cargo-registry-${{ hashFiles('**/Cargo.lock') }} + restore-keys: ${{ runner.os }}-stable-v${{ env.CACHE_VERSION }}-cargo-registry- - name: Cache cargo index uses: actions/cache@v3 with: path: ~/.cargo/git - key: ${{ runner.os }}-v2-cargo-index-${{ hashFiles('**/Cargo.lock') }} - restore-keys: ${{ runner.os }}-v2-cargo-index- + key: ${{ runner.os }}-stable-v${{ env.CACHE_VERSION }}-cargo-index-${{ hashFiles('**/Cargo.lock') }} + restore-keys: ${{ runner.os }}-stable-v${{ env.CACHE_VERSION }}-cargo-index- - name: Cache cargo target dir uses: actions/cache@v3 with: path: target - key: ${{ runner.os }}-v2-cargo-build-target-${{ hashFiles('**/Cargo.lock') }} - restore-keys: ${{ runner.os }}-v2-cargo-build-target- + key: ${{ runner.os }}-stable-v${{ env.CACHE_VERSION }}-cargo-build-target-${{ hashFiles('**/Cargo.lock') }} + restore-keys: ${{ runner.os }}-stable-v${{ env.CACHE_VERSION }}-cargo-build-target- - name: Generate docs uses: actions-rs/cargo@v1 diff --git a/.github/workflows/msrv-rust-toolchain.toml b/.github/workflows/msrv-rust-toolchain.toml new file mode 100644 index 0000000000000..958edb45727e9 --- /dev/null +++ b/.github/workflows/msrv-rust-toolchain.toml @@ -0,0 +1,3 @@ +[toolchain] +channel = "1.60.0" +components = ["rustfmt", "rust-src"]