From ff863370269d726d73c97710f04d4c91202392cf Mon Sep 17 00:00:00 2001 From: SoftFever Date: Tue, 13 Oct 2026 16:10:39 +0800 Subject: [PATCH] Check the legacy filament preset map in CI --- .github/workflows/check_profiles.yml | 31 ++++++++++++++++++++++++++-- 1 file changed, 29 insertions(+), 2 deletions(-) diff --git a/.github/workflows/check_profiles.yml b/.github/workflows/check_profiles.yml index 422513442e..4167cc705b 100644 --- a/.github/workflows/check_profiles.yml +++ b/.github/workflows/check_profiles.yml @@ -13,6 +13,7 @@ on: # both it and its tests live in scripts/, so a PR touching only those must still run # this workflow. - 'resources/printers/**' + - 'resources/info/legacy_compatible_printers.json' - 'scripts/**' # orca_profile_tool.py reads the variant key sets from PrintConfig.cpp, and its # tests the obsolete keys, so a PR changing either must be checked against the profiles. @@ -59,6 +60,21 @@ jobs: python3 ./scripts/orca_profile_tool.py check 2>&1 | tee ${{ runner.temp }}/profile_tool.log exit ${PIPESTATUS[0]} + # The app migrates user filament presets made against 2.4.2 back to the printers their + # parent listed then, from resources/info/legacy_compatible_printers.json. A PR that + # renames a filament preset or narrows its compatible_printers changes what that map + # must say, so it has to regenerate it. + - name: Check the legacy compatible printers map + id: legacy_compat + continue-on-error: true + run: | + set -o pipefail + base="${{ runner.temp }}/v2.4.2" + git fetch --no-tags --depth=1 origin refs/tags/v2.4.2:refs/tags/v2.4.2 + mkdir -p "$base" + git archive v2.4.2 resources/profiles | tar -x -C "$base" + python3 ./scripts/orca_profile_tool.py legacy-compat --base "$base/resources/profiles" --check 2>&1 | tee ${{ runner.temp }}/legacy_compat.log + # download - name: Download working-directory: ${{ github.workspace }} @@ -217,7 +233,7 @@ jobs: echo "${{ github.event.pull_request.number }}" > ${{ runner.temp }}/profile-check-results/pr_number.txt - name: Prepare comment artifact - if: ${{ always() && github.event_name == 'pull_request' && (steps.profile_tool.outcome == 'failure' || steps.validate_system.outcome == 'failure' || steps.validate_slice.outcome == 'failure' || steps.validate_filament_subtypes.outcome == 'failure' || steps.validate_custom.outcome == 'failure') }} + if: ${{ always() && github.event_name == 'pull_request' && (steps.profile_tool.outcome == 'failure' || steps.legacy_compat.outcome == 'failure' || steps.validate_system.outcome == 'failure' || steps.validate_slice.outcome == 'failure' || steps.validate_filament_subtypes.outcome == 'failure' || steps.validate_custom.outcome == 'failure') }} run: | { # Marker matched by check_profiles_comment.yml to delete prior comments. @@ -234,6 +250,17 @@ jobs: echo "" fi + if [ "${{ steps.legacy_compat.outcome }}" = "failure" ]; then + echo "### Legacy Compatible Printers Map Out of Date" + echo "" + echo '```' + head -c 30000 ${{ runner.temp }}/legacy_compat.log || echo "No output captured" + echo '```' + echo "" + echo 'Regenerate it: `git archive v2.4.2 resources/profiles | tar -x -C /tmp/v2.4.2`, then `python3 scripts/orca_profile_tool.py legacy-compat --base /tmp/v2.4.2/resources/profiles`.' + echo "" + fi + if [ "${{ steps.validate_system.outcome }}" = "failure" ]; then echo "### System Profile Validation Failed" echo "" @@ -283,7 +310,7 @@ jobs: retention-days: 1 - name: Fail if any check failed - if: ${{ always() && (steps.profile_tool.outcome == 'failure' || steps.validate_system.outcome == 'failure' || steps.validate_slice.outcome == 'failure' || steps.validate_filament_subtypes.outcome == 'failure' || steps.validate_custom.outcome == 'failure') }} + if: ${{ always() && (steps.profile_tool.outcome == 'failure' || steps.legacy_compat.outcome == 'failure' || steps.validate_system.outcome == 'failure' || steps.validate_slice.outcome == 'failure' || steps.validate_filament_subtypes.outcome == 'failure' || steps.validate_custom.outcome == 'failure') }} run: | echo "One or more profile checks failed; see the step logs above." echo 'Reproduce the whole run locally with scripts/check_profile.sh (scripts\check_profile.bat on Windows).'