From c08497c963caf92991951f77904a21349c20af81 Mon Sep 17 00:00:00 2001 From: AAEE86 Date: Thu, 24 Sep 2026 13:37:25 +0800 Subject: [PATCH] ci: make nightly rust scope explicit --- .github/workflows/nightly.yml | 2 ++ .github/workflows/rust-ci.yml | 21 +++++++++++++++++---- 2 files changed, 19 insertions(+), 4 deletions(-) diff --git a/.github/workflows/nightly.yml b/.github/workflows/nightly.yml index 109a38e6c..802663651 100644 --- a/.github/workflows/nightly.yml +++ b/.github/workflows/nightly.yml @@ -63,6 +63,8 @@ jobs: name: Rust CI needs: source uses: ./.github/workflows/rust-ci.yml + with: + full_scope: true rust_extended: name: Rust extended checks diff --git a/.github/workflows/rust-ci.yml b/.github/workflows/rust-ci.yml index c8d6dfdc2..efa410462 100644 --- a/.github/workflows/rust-ci.yml +++ b/.github/workflows/rust-ci.yml @@ -2,6 +2,12 @@ name: Rust CI on: workflow_call: + inputs: + full_scope: + description: "Run all Rust and shell scopes, used by Nightly" + required: false + type: boolean + default: false push: branches: - master @@ -36,19 +42,26 @@ jobs: - name: Classify changed paths id: scope shell: bash + env: + RUST_CI_FULL_SCOPE: ${{ inputs.full_scope || false }} run: | - # workflow_call(Nightly)仍须完整执行;普通 push/PR 只按源码和构建 + # Nightly 通过 workflow_call 显式传入 full_scope;普通 push/PR 只按源码和构建 # 指纹触发 Rust jobs,安装脚本、Compose、README 等由 shell scope 覆盖。 - if [ "$GITHUB_EVENT_NAME" = "workflow_call" ]; then + if [ "$RUST_CI_FULL_SCOPE" = "true" ]; then echo "rust=true" >> "$GITHUB_OUTPUT" echo "shell=true" >> "$GITHUB_OUTPUT" exit 0 fi - if [ "$GITHUB_EVENT_NAME" = "pull_request" ]; then + if [ "$GITHUB_EVENT_NAME" = "pull_request" ] \ + && [ -n "${GITHUB_BASE_REF:-}" ] \ + && [ -n "${GITHUB_SHA:-}" ]; then git fetch --no-tags origin "$GITHUB_BASE_REF" --depth=1 changed_paths=$(git diff --name-only "origin/$GITHUB_BASE_REF...$GITHUB_SHA") - elif [ "$GITHUB_EVENT_NAME" = "push" ] && [ "$GITHUB_EVENT_BEFORE" != "0000000000000000000000000000000000000000" ]; then + elif [ "$GITHUB_EVENT_NAME" = "push" ] \ + && [ -n "${GITHUB_EVENT_BEFORE:-}" ] \ + && [ "$GITHUB_EVENT_BEFORE" != "0000000000000000000000000000000000000000" ] \ + && [ -n "${GITHUB_SHA:-}" ]; then changed_paths=$(git diff --name-only "$GITHUB_EVENT_BEFORE" "$GITHUB_SHA") else changed_paths=$(git ls-files)