mirror of
https://github.com/OrcaSlicer/OrcaSlicer.git
synced 2026-09-11 11:07:40 +00:00
ci: shard the CLI override sweep across 8 jobs
The effect stage re-slices every landed option one at a time and cannot batch, so it is the entire cost of this job. Today it slices a 20mm cube, where most options change nothing because the fixture has no supports, no second filament and no geometry to act on; once each option is routed to a fixture that can actually show its effect, --effect-full is ~6 h on a 4-vCPU runner and blows the 60-minute timeout. orca-test-repo's parity/effect_routing.json groups options by the cheapest capable fixture and balances the groups by measured slice cost. 8 shards puts the longest at ~53 min. Shards are disjoint and cover every landed option exactly once, including options with no recorded fixture, which are spread round-robin so a newly added one is never dropped from every shard. fail-fast is off so one shard's failure does not cancel the rest, and the report artifact is named per shard so all 8 upload. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01TSynfTLvSnHBbVkRUm56nY
This commit is contained in:
16
.github/workflows/cli_overrides.yml
vendored
16
.github/workflows/cli_overrides.yml
vendored
@@ -30,6 +30,17 @@ jobs:
|
|||||||
overrides:
|
overrides:
|
||||||
runs-on: ubuntu-24.04
|
runs-on: ubuntu-24.04
|
||||||
timeout-minutes: 60
|
timeout-minutes: 60
|
||||||
|
strategy:
|
||||||
|
fail-fast: false
|
||||||
|
matrix:
|
||||||
|
# The effect stage re-slices every landed option one at a time and cannot
|
||||||
|
# batch, so it is the whole cost of this job. Un-sharded it is ~6 h on a
|
||||||
|
# 4-vCPU runner once the option is routed to a fixture that can actually
|
||||||
|
# show its effect. parity/effect_routing.json groups options by cheapest
|
||||||
|
# capable fixture and balances the groups by measured slice cost; 8 shards
|
||||||
|
# puts the longest at ~53 min. Shards are disjoint and cover every landed
|
||||||
|
# option exactly once.
|
||||||
|
shard: [0, 1, 2, 3, 4, 5, 6, 7]
|
||||||
steps:
|
steps:
|
||||||
- name: Find the latest successful Linux build
|
- name: Find the latest successful Linux build
|
||||||
id: build
|
id: build
|
||||||
@@ -95,6 +106,7 @@ jobs:
|
|||||||
working-directory: orca-test-repo
|
working-directory: orca-test-repo
|
||||||
run: |
|
run: |
|
||||||
python -m pytest test_cli_overrides.py -c pytest.ini -v --effect-full \
|
python -m pytest test_cli_overrides.py -c pytest.ini -v --effect-full \
|
||||||
|
--effect-shard ${{ matrix.shard }}/8 \
|
||||||
--orca-bin "$ORCA_BIN" --orca-source "$ORCA_SOURCE" \
|
--orca-bin "$ORCA_BIN" --orca-source "$ORCA_SOURCE" \
|
||||||
2>&1 | tee ../sweep.log
|
2>&1 | tee ../sweep.log
|
||||||
|
|
||||||
@@ -102,7 +114,7 @@ jobs:
|
|||||||
if: always()
|
if: always()
|
||||||
run: |
|
run: |
|
||||||
{
|
{
|
||||||
echo "## CLI override sweep"
|
echo "## CLI override sweep - shard ${{ matrix.shard }}/8"
|
||||||
grep -E "\[override sweep" sweep.log || echo "no stage summaries (see log)"
|
grep -E "\[override sweep" sweep.log || echo "no stage summaries (see log)"
|
||||||
echo
|
echo
|
||||||
grep -E "^(=+ )?[0-9]+ (passed|failed)" sweep.log | tail -1 || true
|
grep -E "^(=+ )?[0-9]+ (passed|failed)" sweep.log | tail -1 || true
|
||||||
@@ -112,7 +124,7 @@ jobs:
|
|||||||
if: always()
|
if: always()
|
||||||
uses: actions/upload-artifact@v7
|
uses: actions/upload-artifact@v7
|
||||||
with:
|
with:
|
||||||
name: override-report-${{ github.run_id }}
|
name: override-report-${{ github.run_id }}-shard${{ matrix.shard }}
|
||||||
path: |
|
path: |
|
||||||
orca-test-repo/.pytest_cache/override_report.json
|
orca-test-repo/.pytest_cache/override_report.json
|
||||||
sweep.log
|
sweep.log
|
||||||
|
|||||||
Reference in New Issue
Block a user