mirror of
https://github.com/rustfs/rustfs.git
synced 2026-08-27 15:37:02 +00:00
ci: preserve timeout evidence for workspace tests (#5402)
* ci: preserve timeout evidence for workspace tests * ci: allow cold doctest compilation to finish * ci: allow cold nextest compilation to finish * ci: allow cold nextest compilation to finish --------- Co-authored-by: houseme <housemecn@gmail.com>
This commit is contained in:
+56
-12
@@ -156,16 +156,69 @@ jobs:
|
|||||||
github-token: ${{ secrets.GITHUB_TOKEN }}
|
github-token: ${{ secrets.GITHUB_TOKEN }}
|
||||||
cache-save-if: ${{ github.ref == 'refs/heads/main' }}
|
cache-save-if: ${{ github.ref == 'refs/heads/main' }}
|
||||||
|
|
||||||
|
- name: Prepare test evidence
|
||||||
|
run: |
|
||||||
|
mkdir -p artifacts/test-and-lint
|
||||||
|
{
|
||||||
|
echo "run_id=${GITHUB_RUN_ID}"
|
||||||
|
echo "job=${GITHUB_JOB}"
|
||||||
|
echo "runner=${RUNNER_NAME}"
|
||||||
|
echo "started_at=$(date --utc --iso-8601=seconds)"
|
||||||
|
} > artifacts/test-and-lint/run-metadata.txt
|
||||||
|
|
||||||
# Clippy runs before the test pass: lint failures are the most common
|
# Clippy runs before the test pass: lint failures are the most common
|
||||||
# CI-only breakage and should surface in minutes, not after 20+ minutes
|
# CI-only breakage and should surface in minutes, not after 20+ minutes
|
||||||
# of tests.
|
# of tests.
|
||||||
- name: Run clippy lints
|
- name: Run clippy lints
|
||||||
run: cargo clippy --all-targets -- -D warnings
|
run: cargo clippy --all-targets -- -D warnings
|
||||||
|
|
||||||
- name: Run tests
|
- name: Run nextest tests
|
||||||
run: |
|
run: |
|
||||||
cargo nextest run --profile ci --all --exclude e2e_test
|
mkdir -p artifacts/test-and-lint
|
||||||
cargo test --all --doc
|
set +e
|
||||||
|
NEXTEST_HIDE_PROGRESS_BAR=1 timeout --verbose --signal=TERM --kill-after=30s 75m \
|
||||||
|
cargo nextest run --profile ci --all --exclude e2e_test \
|
||||||
|
--status-level all --final-status-level all \
|
||||||
|
2>&1 | tee artifacts/test-and-lint/nextest.log
|
||||||
|
status=${PIPESTATUS[0]}
|
||||||
|
{
|
||||||
|
echo "command=cargo nextest run --profile ci --all --exclude e2e_test"
|
||||||
|
echo "exit_status=${status}"
|
||||||
|
echo "finished_at=$(date --utc --iso-8601=seconds)"
|
||||||
|
echo
|
||||||
|
echo "Remaining test-related processes:"
|
||||||
|
pgrep -af 'cargo|nextest|target/.*/deps/' || true
|
||||||
|
} > artifacts/test-and-lint/nextest-diagnostics.txt
|
||||||
|
exit "${status}"
|
||||||
|
|
||||||
|
- name: Run documentation tests
|
||||||
|
run: |
|
||||||
|
mkdir -p artifacts/test-and-lint
|
||||||
|
set +e
|
||||||
|
timeout --verbose --signal=TERM --kill-after=30s 15m \
|
||||||
|
cargo test --all --doc \
|
||||||
|
2>&1 | tee artifacts/test-and-lint/doctest.log
|
||||||
|
status=${PIPESTATUS[0]}
|
||||||
|
{
|
||||||
|
echo "command=cargo test --all --doc"
|
||||||
|
echo "exit_status=${status}"
|
||||||
|
echo "finished_at=$(date --utc --iso-8601=seconds)"
|
||||||
|
echo
|
||||||
|
echo "Remaining test-related processes:"
|
||||||
|
pgrep -af 'cargo|rustdoc|target/.*/deps/' || true
|
||||||
|
} > artifacts/test-and-lint/doctest-diagnostics.txt
|
||||||
|
exit "${status}"
|
||||||
|
|
||||||
|
- name: Upload test reports and diagnostics
|
||||||
|
if: always()
|
||||||
|
uses: actions/upload-artifact@b7c566a772e6b6bfb58ed0dc250532a479d7789f # v6
|
||||||
|
with:
|
||||||
|
name: junit-test-and-lint-${{ github.run_number }}
|
||||||
|
path: |
|
||||||
|
target/nextest/ci/junit.xml
|
||||||
|
artifacts/test-and-lint
|
||||||
|
retention-days: 3
|
||||||
|
if-no-files-found: error
|
||||||
|
|
||||||
# rustfs/backlog#1289: fail if a seed rule's log anchor no longer exists
|
# rustfs/backlog#1289: fail if a seed rule's log anchor no longer exists
|
||||||
# verbatim in the source tree (log message drifted without updating the
|
# verbatim in the source tree (log message drifted without updating the
|
||||||
@@ -174,15 +227,6 @@ jobs:
|
|||||||
- name: Check log-analyzer rule anchors
|
- name: Check log-analyzer rule anchors
|
||||||
run: ./scripts/check_log_analyzer_rules.sh
|
run: ./scripts/check_log_analyzer_rules.sh
|
||||||
|
|
||||||
- name: Upload test junit report
|
|
||||||
if: always()
|
|
||||||
uses: actions/upload-artifact@b7c566a772e6b6bfb58ed0dc250532a479d7789f # v6
|
|
||||||
with:
|
|
||||||
name: junit-test-and-lint-${{ github.run_number }}
|
|
||||||
path: target/nextest/ci/junit.xml
|
|
||||||
retention-days: 3
|
|
||||||
if-no-files-found: ignore
|
|
||||||
|
|
||||||
# Explicit gate for migration-critical suites. These tests already ran in
|
# Explicit gate for migration-critical suites. These tests already ran in
|
||||||
# the full nextest pass above; a single filtered nextest invocation keeps
|
# the full nextest pass above; a single filtered nextest invocation keeps
|
||||||
# the named gate without rebuilding or re-running them one package at a time.
|
# the named gate without rebuilding or re-running them one package at a time.
|
||||||
|
|||||||
Reference in New Issue
Block a user