From c8aa047ccae81c2dd24f5847824854f5466a5813 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fran=C3=A7ois?= Date: Fri, 15 Jul 2022 22:37:07 +0000 Subject: [PATCH] Parameterize nightly toolchain in CI (#5330) # Objective Rust's nightly builds semi-regularly break us (or our dependencies). This creates churn and angst when we're just trying to get our jobs done. We do still want nightly builds for a variety of reasons: * cargo-udeps requires nightly and likely always will. * Helps us catch rust nightly bugs quickly. We're "good citizens" if we regularly report regressions. * Lets us prepare for "actual expected breakage" ahead of stable releases so we avoid breaking main users. ## Solution * This pr parameterizes the nightly toolchain, making it an easy one-liner to pin our builds to a specific nightly, when required. * Put nightly jobs to check wasm and nightly on their own matrix. I also removed tests on nightly linux, just build check * alternative to https://github.com/bevyengine/bevy/pull/5329 Co-authored-by: Carter Anderson --- .github/bors.toml | 12 ++++----- .github/workflows/ci.yml | 58 +++++++++++++++++++++++++--------------- 2 files changed, 43 insertions(+), 27 deletions(-) diff --git a/.github/bors.toml b/.github/bors.toml index 3390d8f2d668e..dcf10fcd57fdc 100644 --- a/.github/bors.toml +++ b/.github/bors.toml @@ -1,10 +1,10 @@ status = [ - "build (stable, windows-latest)", - "build (stable, ubuntu-latest)", - "build (stable, macos-latest)", - "build (nightly, ubuntu-latest)", - "build-wasm (stable, ubuntu-latest)", - "build-wasm (nightly, ubuntu-latest)", + "build (windows-latest)", + "build (ubuntu-latest)", + "build (macos-latest)", + "build-wasm", + "nightly-checks (wasm32-unknown-unknown)", + "nightly-checks (x86_64-unknown-linux-gnu)", "build-android", "markdownlint", "run-examples", diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 196d913e799d3..2f43148b7c94a 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -9,18 +9,13 @@ on: env: CARGO_TERM_COLOR: always + NIGHTLY_TOOLCHAIN: nightly-2022-07-13 jobs: build: strategy: matrix: - toolchain: [stable, nightly] os: [windows-latest, ubuntu-latest, macos-latest] - exclude: - - os: macos-latest - toolchain: nightly - - os: windows-latest - toolchain: nightly runs-on: ${{ matrix.os }} steps: - uses: actions/checkout@v3 @@ -32,11 +27,7 @@ jobs: ~/.cargo/registry/cache/ ~/.cargo/git/db/ target/ - key: ${{ runner.os }}-cargo-build-${{ matrix.toolchain }}-${{ hashFiles('**/Cargo.toml') }} - - uses: actions-rs/toolchain@v1 - with: - toolchain: ${{ matrix.toolchain }} - override: true + key: ${{ runner.os }}-cargo-build-stable-${{ hashFiles('**/Cargo.toml') }} - name: Install alsa and udev run: sudo apt-get update; sudo apt-get install --no-install-recommends libasound2-dev libudev-dev if: runner.os == 'linux' @@ -47,6 +38,35 @@ jobs: CARGO_INCREMENTAL: 0 RUSTFLAGS: "-C debuginfo=0 -D warnings" + nightly-checks: + strategy: + matrix: + target: [wasm32-unknown-unknown, x86_64-unknown-linux-gnu] + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v3 + - uses: actions-rs/toolchain@v1 + with: + toolchain: ${{ env.NIGHTLY_TOOLCHAIN }} + target: ${{ matrix.target }} + override: true + - uses: actions/cache@v3 + with: + path: | + ~/.cargo/bin/ + ~/.cargo/registry/index/ + ~/.cargo/registry/cache/ + ~/.cargo/git/db/ + target/ + key: ubuntu-latest-cargo-build-stable-${{ matrix.target }}-${{ hashFiles('**/Cargo.toml') }} + - name: Install alsa and udev + run: sudo apt-get update; sudo apt-get install --no-install-recommends libasound2-dev libudev-dev + - name: Check wasm + uses: actions-rs/cargo@v1 + with: + command: check + args: --target ${{ matrix.target }} + ci: runs-on: ubuntu-latest steps: @@ -87,7 +107,7 @@ jobs: key: ${{ runner.os }}-cargo-miri-${{ hashFiles('**/Cargo.toml') }} - uses: actions-rs/toolchain@v1 with: - toolchain: nightly + toolchain: ${{ env.NIGHTLY_TOOLCHAIN }} components: miri override: true - name: Install alsa and udev @@ -132,11 +152,7 @@ jobs: run: cargo run -p ci -- compile build-wasm: - strategy: - matrix: - toolchain: [stable, nightly] - os: [ubuntu-latest] - runs-on: ${{ matrix.os }} + runs-on: ubuntu-latest needs: build steps: - uses: actions/checkout@v3 @@ -148,17 +164,17 @@ jobs: ~/.cargo/registry/cache/ ~/.cargo/git/db/ target/ - key: ${{ runner.os }}-cargo-build-wasm-${{ matrix.toolchain }}-${{ hashFiles('**/Cargo.toml') }} + key: ubuntu-assets-cargo-build-wasm-stable-${{ hashFiles('**/Cargo.toml') }} - uses: actions-rs/toolchain@v1 with: - toolchain: ${{ matrix.toolchain }} + toolchain: stable target: wasm32-unknown-unknown override: true - name: Check wasm uses: actions-rs/cargo@v1 with: command: check - args: --target wasm32-unknown-unknown --no-default-features --features bevy_winit,x11,hdr,bevy_gltf + args: --target wasm32-unknown-unknown markdownlint: runs-on: ubuntu-latest @@ -291,7 +307,7 @@ jobs: key: ${{ runner.os }}-cargo-check-unused-dependencies-${{ hashFiles('**/Cargo.toml') }} - uses: actions-rs/toolchain@v1 with: - toolchain: nightly + toolchain: ${{ env.NIGHTLY_TOOLCHAIN }} override: true - name: Installs cargo-udeps run: cargo install --force cargo-udeps