diff --git a/.github/workflows/build_all.yml b/.github/workflows/build_all.yml index 49e6f58fd6..fd7d764c45 100644 --- a/.github/workflows/build_all.yml +++ b/.github/workflows/build_all.yml @@ -165,6 +165,30 @@ jobs: os: ${{ vars.SELF_HOSTED && 'orca-macos-arm64' || 'macos-14' }} artifact: ${{ github.sha }}-tests-macos-arm64 test-dir: build/arm64/tests + # Slice a two-colour cube through every shipped printer with this PR's engine + # so all custom g-code (change_filament_gcode, machine start/end, etc.) is + # expanded - catches slicing regressions the static profile checks and unit + # tests can't see. Profile-only PRs are covered by check_profiles.yml (nightly + # binary); this covers src/engine PRs with the PR-built binary. Runs in + # parallel off build_linux's artifact so it doesn't lengthen the build leg. + slice_check_linux: + name: Slice check (Linux x86_64) + needs: build_linux + if: ${{ !cancelled() && success() }} + runs-on: ${{ vars.SELF_HOSTED && 'orca-lnx-server' || 'ubuntu-24.04' }} + steps: + - name: Checkout repository + uses: actions/checkout@v7 + - name: Download profile validator + uses: actions/download-artifact@v8 + with: + name: ${{ github.sha }}-profile-validator-linux-x86_64 + path: validator-bin + - name: Validate slice (expand custom g-code) + timeout-minutes: 60 + run: | + chmod +x validator-bin/OrcaSlicer_profile_validator + ./validator-bin/OrcaSlicer_profile_validator -p "${{ github.workspace }}/resources/profiles" -s -l 2 publish_test_results: name: Publish Test Results needs: [unit_tests_linux_x86_64, unit_tests_linux_aarch64, unit_tests_windows_x64, unit_tests_windows_arm64, unit_tests_macos_arm64] diff --git a/.github/workflows/build_orca.yml b/.github/workflows/build_orca.yml index 21c65283a9..273c5074ce 100644 --- a/.github/workflows/build_orca.yml +++ b/.github/workflows/build_orca.yml @@ -508,6 +508,20 @@ jobs: retention-days: 5 if-no-files-found: error + # Ship the freshly-built validator so the parallel slice_check_linux job + # (build_all.yml) can slice-sweep the shipped profiles with this PR's + # engine. Stable sha-based name mirrors the tests artifact above so the + # downstream job downloads it by exact name. + - name: Upload profile validator (for slice check) + if: runner.os == 'Linux' && inputs.arch != 'aarch64' + uses: actions/upload-artifact@v7 + with: + name: ${{ github.sha }}-profile-validator-linux-x86_64 + overwrite: true + path: ./build/src/Release/OrcaSlicer_profile_validator + retention-days: 5 + if-no-files-found: error + - name: Run external slicer regression tests if: runner.os == 'Linux' && inputs.arch != 'aarch64' timeout-minutes: 20