chore: make it easier to pin Rust versions in CI (#4448)

When backporting patches to LTS branches, we often run into CI failures due to
changes in rust. Newer rust versions add more lints, which break CI. We really
don't want to also have to backport patches that fix CI, so instead, LTS branches
should pin the stable rust version in CI (e.g. #4434).

This PR restructures the CI config files to make it a bit easier to set a specific rust
version in CI.
This commit is contained in:
Carl Lerche
2022-01-30 10:07:31 -08:00
committed by GitHub
parent db18e0d39d
commit 2cee1db20c
5 changed files with 106 additions and 54 deletions
+4 -1
View File
@@ -4,6 +4,9 @@ jobs:
machine: machine:
image: ubuntu-2004:202101-01 image: ubuntu-2004:202101-01
resource_class: arm.medium resource_class: arm.medium
environment:
# Change to pin rust versino
RUST_STABLE: stable
steps: steps:
- checkout - checkout
- run: - run:
@@ -11,7 +14,7 @@ jobs:
command: | command: |
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs -o rustup.sh curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs -o rustup.sh
chmod +x rustup.sh chmod +x rustup.sh
./rustup.sh -y ./rustup.sh -y --default-toolchain $RUST_STABLE
source "$HOME"/.cargo/env source "$HOME"/.cargo/env
# Only run Tokio tests # Only run Tokio tests
- run: cargo test --all-features -p tokio - run: cargo test --all-features -p tokio
+5 -3
View File
@@ -1,6 +1,8 @@
freebsd_instance: freebsd_instance:
image: freebsd-12-2-release-amd64 image: freebsd-12-2-release-amd64
env: env:
RUST_STABLE: stable
RUST_NIGHTLY: nightly-2022-01-12
RUSTFLAGS: -D warnings RUSTFLAGS: -D warnings
# Test FreeBSD in a full VM on cirrus-ci.com. Test the i686 target too, in the # Test FreeBSD in a full VM on cirrus-ci.com. Test the i686 target too, in the
@@ -12,7 +14,7 @@ task:
setup_script: setup_script:
- pkg install -y bash curl - pkg install -y bash curl
- curl https://sh.rustup.rs -sSf --output rustup.sh - curl https://sh.rustup.rs -sSf --output rustup.sh
- sh rustup.sh -y --profile minimal --default-toolchain stable - sh rustup.sh -y --profile minimal --default-toolchain $RUST_STABLE
- . $HOME/.cargo/env - . $HOME/.cargo/env
- | - |
echo "~~~~ rustc --version ~~~~" echo "~~~~ rustc --version ~~~~"
@@ -29,7 +31,7 @@ task:
setup_script: setup_script:
- pkg install -y bash curl - pkg install -y bash curl
- curl https://sh.rustup.rs -sSf --output rustup.sh - curl https://sh.rustup.rs -sSf --output rustup.sh
- sh rustup.sh -y --profile minimal --default-toolchain nightly-2022-01-12 - sh rustup.sh -y --profile minimal --default-toolchain $RUST_NIGHTLY
- . $HOME/.cargo/env - . $HOME/.cargo/env
- | - |
echo "~~~~ rustc --version ~~~~" echo "~~~~ rustc --version ~~~~"
@@ -43,7 +45,7 @@ task:
setup_script: setup_script:
- pkg install -y bash curl - pkg install -y bash curl
- curl https://sh.rustup.rs -sSf --output rustup.sh - curl https://sh.rustup.rs -sSf --output rustup.sh
- sh rustup.sh -y --profile minimal --default-toolchain stable - sh rustup.sh -y --profile minimal --default-toolchain $RUST_STABLE
- . $HOME/.cargo/env - . $HOME/.cargo/env
- rustup target add i686-unknown-freebsd - rustup target add i686-unknown-freebsd
- | - |
+79 -46
View File
@@ -9,8 +9,11 @@ name: CI
env: env:
RUSTFLAGS: -Dwarnings RUSTFLAGS: -Dwarnings
RUST_BACKTRACE: 1 RUST_BACKTRACE: 1
nightly: nightly-2022-01-12 # Change to specific Rust release to pin
minrust: 1.46 rust_stable: stable
rust_nightly: nightly-2022-01-12
rust_clippy: 1.52.0
rust_min: 1.46.0
defaults: defaults:
run: run:
@@ -51,6 +54,11 @@ jobs:
- macos-latest - macos-latest
steps: steps:
- uses: actions/checkout@v2 - uses: actions/checkout@v2
- name: Install Rust ${{ env.rust_stable }}
uses: actions-rs/toolchain@v1
with:
toolchain: ${{ env.rust_stable }}
override: true
- name: Install Rust - name: Install Rust
run: rustup update stable run: rustup update stable
- uses: Swatinem/rust-cache@v1 - uses: Swatinem/rust-cache@v1
@@ -96,8 +104,11 @@ jobs:
runs-on: ubuntu-latest runs-on: ubuntu-latest
steps: steps:
- uses: actions/checkout@v2 - uses: actions/checkout@v2
- name: Install Rust - name: Install Rust ${{ env.rust_stable }}
run: rustup update stable uses: actions-rs/toolchain@v1
with:
toolchain: ${{ env.rust_stable }}
override: true
- uses: Swatinem/rust-cache@v1 - uses: Swatinem/rust-cache@v1
- name: Enable parking_lot send_guard feature - name: Enable parking_lot send_guard feature
# Inserts the line "plsend = ["parking_lot/send_guard"]" right after [features] # Inserts the line "plsend = ["parking_lot/send_guard"]" right after [features]
@@ -110,8 +121,11 @@ jobs:
runs-on: ubuntu-latest runs-on: ubuntu-latest
steps: steps:
- uses: actions/checkout@v2 - uses: actions/checkout@v2
- name: Install Rust - name: Install Rust ${{ env.rust_stable }}
run: rustup update stable uses: actions-rs/toolchain@v1
with:
toolchain: ${{ env.rust_stable }}
override: true
- uses: Swatinem/rust-cache@v1 - uses: Swatinem/rust-cache@v1
- name: Install Valgrind - name: Install Valgrind
@@ -148,10 +162,12 @@ jobs:
- macos-latest - macos-latest
steps: steps:
- uses: actions/checkout@v2 - uses: actions/checkout@v2
- name: Install Rust - name: Install Rust ${{ env.rust_stable }}
run: rustup update stable uses: actions-rs/toolchain@v1
with:
toolchain: ${{ env.rust_stable }}
override: true
- uses: Swatinem/rust-cache@v1 - uses: Swatinem/rust-cache@v1
# Run `tokio` with "unstable" cfg flag. # Run `tokio` with "unstable" cfg flag.
- name: test tokio full --cfg unstable - name: test tokio full --cfg unstable
run: cargo test --all-features run: cargo test --all-features
@@ -164,29 +180,29 @@ jobs:
runs-on: ubuntu-latest runs-on: ubuntu-latest
steps: steps:
- uses: actions/checkout@v2 - uses: actions/checkout@v2
- uses: actions-rs/toolchain@v1 - name: Install Rust ${{ env.rust_nightly }}
uses: actions-rs/toolchain@v1
with: with:
toolchain: ${{ env.nightly }} toolchain: ${{ env.rust_nightly }}
components: miri
override: true override: true
- uses: Swatinem/rust-cache@v1 - uses: Swatinem/rust-cache@v1
- name: Install Miri - name: miri
run: | run: |
set -e set -e
rustup component add miri rm -rf tests
cargo miri setup cargo miri test --features rt,rt-multi-thread,sync task
rm -rf tokio/tests
- name: miri
run: cargo miri test --features rt,rt-multi-thread,sync task
working-directory: tokio working-directory: tokio
san: san:
name: san name: san
runs-on: ubuntu-latest runs-on: ubuntu-latest
steps: steps:
- uses: actions/checkout@v2 - uses: actions/checkout@v2
- uses: actions-rs/toolchain@v1 - name: Install Rust ${{ env.rust_nightly }}
uses: actions-rs/toolchain@v1
with: with:
toolchain: ${{ env.nightly }} toolchain: ${{ env.rust_nightly }}
override: true override: true
- uses: Swatinem/rust-cache@v1 - uses: Swatinem/rust-cache@v1
- name: asan - name: asan
@@ -209,9 +225,10 @@ jobs:
- arm-linux-androideabi - arm-linux-androideabi
steps: steps:
- uses: actions/checkout@v2 - uses: actions/checkout@v2
- uses: actions-rs/toolchain@v1 - name: Install Rust ${{ env.rust_stable }}
uses: actions-rs/toolchain@v1
with: with:
toolchain: stable toolchain: ${{ env.rust_stable }}
target: ${{ matrix.target }} target: ${{ matrix.target }}
override: true override: true
- uses: Swatinem/rust-cache@v1 - uses: Swatinem/rust-cache@v1
@@ -226,17 +243,17 @@ jobs:
runs-on: ubuntu-latest runs-on: ubuntu-latest
steps: steps:
- uses: actions/checkout@v2 - uses: actions/checkout@v2
- uses: actions-rs/toolchain@v1 - name: Install Rust ${{ env.rust_nightly }}
uses: actions-rs/toolchain@v1
with: with:
toolchain: ${{ env.nightly }} toolchain: ${{ env.rust_nightly }}
target: ${{ matrix.target }}
override: true override: true
- uses: Swatinem/rust-cache@v1 - uses: Swatinem/rust-cache@v1
- name: Install cargo-hack - name: Install cargo-hack
run: cargo install cargo-hack run: cargo install cargo-hack
- name: check --each-feature - name: check --each-feature
run: cargo hack check --all --each-feature -Z avoid-dev-deps run: cargo hack check --all --each-feature -Z avoid-dev-deps
# Try with unstable feature flags # Try with unstable feature flags
- name: check --each-feature --unstable - name: check --each-feature --unstable
run: cargo hack check --all --each-feature -Z avoid-dev-deps run: cargo hack check --all --each-feature -Z avoid-dev-deps
@@ -248,9 +265,10 @@ jobs:
runs-on: ubuntu-latest runs-on: ubuntu-latest
steps: steps:
- uses: actions/checkout@v2 - uses: actions/checkout@v2
- uses: actions-rs/toolchain@v1 - name: Install Rust ${{ env.rust_min }}
uses: actions-rs/toolchain@v1
with: with:
toolchain: ${{ env.minrust }} toolchain: ${{ env.rust_min }}
override: true override: true
- uses: Swatinem/rust-cache@v1 - uses: Swatinem/rust-cache@v1
- name: "test --workspace --all-features" - name: "test --workspace --all-features"
@@ -261,9 +279,10 @@ jobs:
runs-on: ubuntu-latest runs-on: ubuntu-latest
steps: steps:
- uses: actions/checkout@v2 - uses: actions/checkout@v2
- uses: actions-rs/toolchain@v1 - name: Install Rust ${{ env.rust_nightly }}
uses: actions-rs/toolchain@v1
with: with:
toolchain: ${{ env.nightly }} toolchain: ${{ env.rust_nightly }}
override: true override: true
- uses: Swatinem/rust-cache@v1 - uses: Swatinem/rust-cache@v1
- name: Install cargo-hack - name: Install cargo-hack
@@ -292,10 +311,13 @@ jobs:
runs-on: ubuntu-latest runs-on: ubuntu-latest
steps: steps:
- uses: actions/checkout@v2 - uses: actions/checkout@v2
- name: Install Rust - name: Install Rust ${{ env.rust_stable }}
run: rustup update stable uses: actions-rs/toolchain@v1
with:
toolchain: ${{ env.rust_stable }}
override: true
components: rustfmt
- uses: Swatinem/rust-cache@v1 - uses: Swatinem/rust-cache@v1
# Check fmt # Check fmt
- name: "rustfmt --check" - name: "rustfmt --check"
# Workaround for rust-lang/cargo#7732 # Workaround for rust-lang/cargo#7732
@@ -310,12 +332,13 @@ jobs:
runs-on: ubuntu-latest runs-on: ubuntu-latest
steps: steps:
- uses: actions/checkout@v2 - uses: actions/checkout@v2
- name: Install Rust - name: Install Rust ${{ env.rust_clippy }}
run: rustup update 1.57 && rustup default 1.57 uses: actions-rs/toolchain@v1
with:
toolchain: ${{ env.rust_clippy }}
override: true
components: clippy
- uses: Swatinem/rust-cache@v1 - uses: Swatinem/rust-cache@v1
- name: Install clippy
run: rustup component add clippy
# Run clippy # Run clippy
- name: "clippy --all" - name: "clippy --all"
run: cargo clippy --all --tests --all-features run: cargo clippy --all --tests --all-features
@@ -325,9 +348,10 @@ jobs:
runs-on: ubuntu-latest runs-on: ubuntu-latest
steps: steps:
- uses: actions/checkout@v2 - uses: actions/checkout@v2
- uses: actions-rs/toolchain@v1 - name: Install Rust ${{ env.rust_nightly }}
uses: actions-rs/toolchain@v1
with: with:
toolchain: ${{ env.nightly }} toolchain: ${{ env.rust_nightly }}
override: true override: true
- uses: Swatinem/rust-cache@v1 - uses: Swatinem/rust-cache@v1
- name: "doc --lib --all-features" - name: "doc --lib --all-features"
@@ -341,8 +365,11 @@ jobs:
runs-on: ubuntu-latest runs-on: ubuntu-latest
steps: steps:
- uses: actions/checkout@v2 - uses: actions/checkout@v2
- name: Install Rust - name: Install Rust ${{ env.rust_stable }}
run: rustup update stable uses: actions-rs/toolchain@v1
with:
toolchain: ${{ env.rust_stable }}
override: true
- uses: Swatinem/rust-cache@v1 - uses: Swatinem/rust-cache@v1
- name: build --cfg loom - name: build --cfg loom
run: cargo test --no-run --lib --features full run: cargo test --no-run --lib --features full
@@ -373,8 +400,11 @@ jobs:
- macos-latest - macos-latest
steps: steps:
- uses: actions/checkout@v2 - uses: actions/checkout@v2
- name: Install Rust - name: Install Rust ${{ env.rust_stable }}
run: rustup update stable uses: actions-rs/toolchain@v1
with:
toolchain: ${{ env.rust_stable }}
override: true
- uses: Swatinem/rust-cache@v1 - uses: Swatinem/rust-cache@v1
- name: Test hyper - name: Test hyper
run: | run: |
@@ -398,8 +428,11 @@ jobs:
runs-on: ubuntu-latest runs-on: ubuntu-latest
steps: steps:
- uses: actions/checkout@v2 - uses: actions/checkout@v2
- name: Install Rust - name: Install Rust ${{ env.rust_stable }}
run: rustup update stable uses: actions-rs/toolchain@v1
with:
toolchain: ${{ env.rust_stable }}
override: true
- uses: Swatinem/rust-cache@v1 - uses: Swatinem/rust-cache@v1
- name: Install wasm-pack - name: Install wasm-pack
run: curl https://rustwasm.github.io/wasm-pack/installer/init.sh -sSf | sh run: curl https://rustwasm.github.io/wasm-pack/installer/init.sh -sSf | sh
+7 -2
View File
@@ -10,6 +10,8 @@ name: Loom
env: env:
RUSTFLAGS: -Dwarnings RUSTFLAGS: -Dwarnings
RUST_BACKTRACE: 1 RUST_BACKTRACE: 1
# Change to specific Rust release to pin
rust_stable: stable
jobs: jobs:
loom: loom:
@@ -28,8 +30,11 @@ jobs:
- time::driver - time::driver
steps: steps:
- uses: actions/checkout@v2 - uses: actions/checkout@v2
- name: Install Rust - name: Install Rust ${{ env.rust_stable }}
run: rustup update stable uses: actions-rs/toolchain@v1
with:
toolchain: ${{ env.rust_stable }}
override: true
- uses: Swatinem/rust-cache@v1 - uses: Swatinem/rust-cache@v1
- name: loom ${{ matrix.scope }} - name: loom ${{ matrix.scope }}
run: cargo test --lib --release --features full -- --nocapture $SCOPE run: cargo test --lib --release --features full -- --nocapture $SCOPE
+11 -2
View File
@@ -5,6 +5,12 @@ on:
branches: branches:
- master - master
env:
RUSTFLAGS: -Dwarnings
RUST_BACKTRACE: 1
# Change to specific Rust release to pin
rust_stable: stable
jobs: jobs:
stess-test: stess-test:
name: Stress Test name: Stress Test
@@ -15,8 +21,11 @@ jobs:
- simple_echo_tcp - simple_echo_tcp
steps: steps:
- uses: actions/checkout@v2 - uses: actions/checkout@v2
- name: Install Rust - name: Install Rust ${{ env.rust_stable }}
run: rustup update stable uses: actions-rs/toolchain@v1
with:
toolchain: ${{ env.rust_stable }}
override: true
- uses: Swatinem/rust-cache@v1 - uses: Swatinem/rust-cache@v1
- name: Install Valgrind - name: Install Valgrind
run: | run: |