diff --git a/.github/workflows/rustfs-validation-tools.yml b/.github/workflows/rustfs-validation-tools.yml index 6afc16dbe..8524c6e19 100644 --- a/.github/workflows/rustfs-validation-tools.yml +++ b/.github/workflows/rustfs-validation-tools.yml @@ -10,6 +10,10 @@ on: auto_testing_sha: type: string required: true + build_native_heal: + type: boolean + required: false + default: false secrets: PF_TESTING_GH_TOKEN: required: true @@ -23,11 +27,80 @@ on: description: Exact auto-testing SHA containing the Heal metadata inspector type: string required: true + build_native_heal: + description: Also compile and run separate exact-source native Heal regressions + type: boolean + required: false + default: false permissions: contents: read jobs: + native-heal-regressions: + if: ${{ inputs.build_native_heal }} + runs-on: ubuntu-22.04 + timeout-minutes: 180 + env: + CANDIDATE_SHA: ${{ inputs.candidate_sha }} + AUTO_TESTING_SHA: ${{ inputs.auto_testing_sha }} + steps: + - name: Validate immutable native source inputs + run: | + set -euo pipefail + [[ "${CANDIDATE_SHA}" =~ ^[0-9a-f]{40}$ ]] + [[ "${AUTO_TESTING_SHA}" =~ ^[0-9a-f]{40}$ ]] + + - name: Checkout exact native candidate source + uses: actions/checkout@f548e57e544e1ff5a4c46bf1e1b8685f8e4a348a # v7 + with: + ref: ${{ inputs.candidate_sha }} + path: candidate + persist-credentials: false + + - name: Checkout exact native collector source + uses: actions/checkout@f548e57e544e1ff5a4c46bf1e1b8685f8e4a348a # v7 + with: + repository: rustfs/auto-testing + ref: ${{ inputs.auto_testing_sha }} + token: ${{ secrets.PF_TESTING_GH_TOKEN }} + path: auto-testing + persist-credentials: false + + - name: Install native build dependencies + run: | + set -euo pipefail + sudo apt-get update + sudo apt-get install -y clang lld cmake pkg-config libssl-dev protobuf-compiler + df -h . + + - name: Build and enumerate the unmodified candidate test executable + run: | + set -euo pipefail + test "$(git -C auto-testing rev-parse HEAD)" = "${AUTO_TESTING_SHA}" + python3 -B auto-testing/scripts/validation_heal/native_regressions.py build \ + --source candidate --commit "${CANDIDATE_SHA}" --out native-tools + + - name: Run exact native regressions separately from fleet validation + run: | + set -euo pipefail + python3 -B auto-testing/scripts/validation_heal/native_regressions.py run \ + --directory native-tools --out native-evidence + + - name: Upload native executable identities and original diagnostics + if: ${{ always() }} + uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7.0.1 + with: + name: rustfs-validation-native-${{ github.run_id }}-${{ github.run_attempt }} + path: | + native-tools/ecstore-native-tests + native-tools/*.json + native-tools/*.jsonl + native-tools/*.stderr + native-tools/*.log + native-evidence/ + if-no-files-found: warn + heal-metadata-inspector: runs-on: ubuntu-22.04 timeout-minutes: 30