Skip to content

Commit 12df148

Browse files
committed
CI: consolidate cargo stuff, run miri under nextest
1 parent 65fb965 commit 12df148

File tree

1 file changed

+40
-19
lines changed

1 file changed

+40
-19
lines changed

.github/workflows/CI-linux.yml

Lines changed: 40 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -62,6 +62,12 @@ jobs:
6262
timeout-minutes: 1
6363
run: |
6464
set -xe
65+
if [ "${{ env.CODE_COVERAGE_SUPPORTED }}" = "true" ] && [[ [ "${{ inputs.builder-host }}" = "${{ inputs.builder-target }}" || [[ [ "${{ env.ENDIANNESS }}" = "big" ] && [ "${{ inputs.builder-target }}" != "s390x" ] ]] ]] && [[ [ "${{ github.event_name }}" = "pull_request" ] || [ "${{ env.CODECOV_TOKEN_EXISTS }}" = "true" ] ]]; then
66+
WITH_CODE_COVERAGE=true
67+
else
68+
WITH_CODE_COVERAGE=false
69+
fi
70+
echo "WITH_CODE_COVERAGE=$(echo ${WITH_CODE_COVERAGE})" >> $GITHUB_ENV
6571
if [ "${{ inputs.builder-target }}" = "x86_64" ] \
6672
|| [ "${{ inputs.builder-target }}" = "aarch64" ] \
6773
|| [ "${{ inputs.builder-target }}" = "i686" ] \
@@ -272,36 +278,51 @@ jobs:
272278
eatmydata apt install ${{ env.PACKAGES }}
273279
eatmydata apt clean
274280
rm -rf /var/lib/apt/lists/*
275-
- name: Install Rust toolchain and targets
276-
timeout-minutes: 1
281+
- name: Install Rust toolchain and targets and crates
282+
timeout-minutes: 3
277283
run: |
278284
set -xe
285+
RUST_COMPONENTS=""
286+
RUST_CRATES=""
279287
eatmydata curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- --default-toolchain none -y
280288
. "$HOME/.cargo/env"
281289
eatmydata rustup toolchain install ${{ inputs.rust-toolchain-name }} --allow-downgrade --profile minimal
282290
eatmydata rustup default ${{ inputs.rust-toolchain-name }}
283291
eatmydata rustup target add ${{ env.RUST_TARGET }}
284292
if [ "${{ inputs.flavor }}" = "RustFmt" ]; then
285-
eatmydata rustup component add rustfmt
293+
RUST_COMPONENTS="${RUST_COMPONENTS} \
294+
rustfmt \
295+
"
286296
elif [ "${{ inputs.flavor }}" = "doc" ]; then
287297
/bin/true
288298
elif [ "${{ inputs.flavor }}" = "dev" ] || [ "${{ inputs.flavor }}" = "release" ]; then
289-
eatmydata rustup component add clippy
299+
RUST_COMPONENTS="${RUST_COMPONENTS} \
300+
clippy \
301+
"
290302
else
291303
exit 1
292304
fi
293305
if [ "${{ env.WITH_MIRI }}" = "true" ]; then
294-
eatmydata rustup component add miri
295-
eatmydata rustup component add rust-src
306+
RUST_COMPONENTS="${RUST_COMPONENTS} \
307+
rust-src \
308+
miri \
309+
"
310+
RUST_CRATES="${RUST_CRATES} \
311+
cargo-nextest \
312+
"
313+
fi
314+
if [ "${{ env.WITH_CODE_COVERAGE }}" = "true" ]; then
315+
RUST_COMPONENTS="${RUST_COMPONENTS} \
316+
llvm-tools-preview \
317+
"
318+
RUST_CRATES="${RUST_CRATES} \
319+
cargo-llvm-cov \
320+
"
321+
fi
322+
eatmydata rustup component add ${RUST_COMPONENTS}
323+
if [ "${RUST_CRATES}" != "" ]; then
324+
eatmydata cargo install ${RUST_CRATES}
296325
fi
297-
- name: Install necessary Rust packages for code coverage
298-
if: env.CODE_COVERAGE_SUPPORTED == 'true' && (inputs.builder-host == inputs.builder-target || (env.ENDIANNESS == 'big' && inputs.builder-target != 's390x')) && (github.event_name == 'pull_request' || env.CODECOV_TOKEN_EXISTS == 'true')
299-
timeout-minutes: 2
300-
run: |
301-
set -xe
302-
. "$HOME/.cargo/env"
303-
eatmydata rustup component add llvm-tools-preview
304-
eatmydata cargo install cargo-llvm-cov
305326
- name: Fetch/Checkout msvc-wine git repo
306327
timeout-minutes: 1
307328
if: inputs.target-os == 'windows' && inputs.rust-toolchain-abi == 'msvc'
@@ -405,7 +426,7 @@ jobs:
405426
cargo test --target ${{ env.RUST_TARGET }} --profile ${{ inputs.flavor }}
406427
- name: Run tests to collect code coverage
407428
timeout-minutes: 2
408-
if: env.CODE_COVERAGE_SUPPORTED == 'true' && (inputs.builder-host == inputs.builder-target || (env.ENDIANNESS == 'big' && inputs.builder-target != 's390x')) && (github.event_name == 'pull_request' || env.CODECOV_TOKEN_EXISTS == 'true')
429+
if: env.WITH_CODE_COVERAGE == 'true'
409430
env:
410431
RUSTFLAGS: "-C instrument-coverage"
411432
run: |
@@ -416,15 +437,15 @@ jobs:
416437
cargo llvm-cov --no-report --target ${{ env.RUST_TARGET }} --profile ${{ inputs.flavor }}
417438
- name: Aggregate code coverage
418439
timeout-minutes: 1
419-
if: env.CODE_COVERAGE_SUPPORTED == 'true' && (inputs.builder-host == inputs.builder-target || (env.ENDIANNESS == 'big' && inputs.builder-target != 's390x')) && (github.event_name == 'pull_request' || env.CODECOV_TOKEN_EXISTS == 'true')
440+
if: env.WITH_CODE_COVERAGE == 'true'
420441
run: |
421442
set -xe
422443
. "$HOME/.cargo/env"
423444
cd "$SRC_DIR"
424445
cargo llvm-cov report --codecov --output-path $SRC_DIR/codecov.json --target ${{ env.RUST_TARGET }} --profile ${{ inputs.flavor }}
425446
- name: Upload coverage reports to Codecov
426447
timeout-minutes: 1
427-
if: env.CODE_COVERAGE_SUPPORTED == 'true' && (inputs.builder-host == inputs.builder-target || (env.ENDIANNESS == 'big' && inputs.builder-target != 's390x')) && (github.event_name == 'pull_request' || env.CODECOV_TOKEN_EXISTS == 'true')
448+
if: env.WITH_CODE_COVERAGE == 'true'
428449
uses: codecov/codecov-action@v5
429450
env:
430451
OS: ${{ inputs.os }}
@@ -441,13 +462,13 @@ jobs:
441462
root_dir: ${{ env.SRC_DIR }}
442463
fail_ci_if_error: true
443464
- name: Run tests under Miri
444-
timeout-minutes: 5
465+
timeout-minutes: 60
445466
if: env.WITH_MIRI == 'true'
446467
run: |
447468
set -xe
448469
. "$HOME/.cargo/env"
449470
cd "$SRC_DIR"
450-
cargo miri test --target ${{ env.RUST_TARGET }}
471+
cargo miri nextest run --target ${{ env.RUST_TARGET }}
451472
- name: Build docs
452473
timeout-minutes: 1
453474
if: inputs.flavor == 'doc'

0 commit comments

Comments
 (0)