ci(regression): make all style shards required

All style regression tests passed on first run — promote them from
optional (continue-on-error) to required. Rebalanced into 4 style
shards + 1 fast shard, all gated by the summary job.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
James
2026-03-23 20:03:30 +00:00
co-authored by Claude Opus 4.6
parent 04c48d5bc5
commit df6aa100d4
+11 -72
View File
@@ -9,15 +9,21 @@ on:
jobs:
regression-shards:
runs-on: ubuntu-latest
timeout-minutes: 30
timeout-minutes: 40
strategy:
fail-fast: false
matrix:
include:
- shard: fast
args: "--sequential --exclude-tags slow"
- shard: required-styles
tests: "style-5-prod style-6-prod style-10-prod"
- shard: styles-a
args: "style-1-prod style-2-prod style-3-prod style-5-prod"
- shard: styles-b
args: "style-4-prod style-6-prod style-10-prod style-11-prod"
- shard: styles-c
args: "style-7-prod style-8-prod style-9-prod style-12-prod"
- shard: styles-d
args: "style-13-prod style-15-prod style-16-prod style-17-prod style-18-prod"
steps:
- name: Checkout (with LFS)
uses: actions/checkout@v4
@@ -54,13 +60,13 @@ jobs:
- name: "Run regression shard: ${{ matrix.shard }}"
run: |
echo "Shard: ${{ matrix.shard }}"
echo "Args: ${{ matrix.args || matrix.tests }}"
echo "Args: ${{ matrix.args }}"
docker run --rm \
--security-opt seccomp=unconfined \
--shm-size=4g \
-v ${{ github.workspace }}/packages/producer/tests:/app/packages/producer/tests \
hyperframes-producer:test \
${{ matrix.args || matrix.tests }}
${{ matrix.args }}
- name: Upload failure artifacts
if: failure()
@@ -82,70 +88,3 @@ jobs:
echo "One or more regression shards failed"
exit 1
fi
regression-optional-styles:
runs-on: ubuntu-latest
continue-on-error: true
timeout-minutes: 40
strategy:
fail-fast: false
matrix:
include:
- shard: styles-a
tests: "style-1-prod style-2-prod style-3-prod"
- shard: styles-b
tests: "style-4-prod style-11-prod style-12-prod"
- shard: styles-c
tests: "style-15-prod style-17-prod style-18-prod"
- shard: styles-d
tests: "style-7-prod style-13-prod style-16-prod"
steps:
- name: Checkout (with LFS)
uses: actions/checkout@v4
with:
lfs: true
- name: Validate LFS files
run: |
echo "Checking golden baseline MP4s (shard ${{ matrix.shard }})..."
for mp4 in packages/producer/tests/*/output/output.mp4; do
if [ -f "$mp4" ]; then
size=$(stat --format=%s "$mp4")
if [ "$size" -lt 1000 ]; then
echo "ERROR: $mp4 appears to be an LFS pointer ($size bytes)"
exit 1
fi
fi
done
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v3
- name: Build test Docker image (cached)
uses: docker/build-push-action@v6
with:
context: .
file: Dockerfile.test
load: true
tags: hyperframes-producer:test
cache-from: type=gha,scope=regression-test-image
cache-to: type=gha,mode=max,scope=regression-test-image
- name: "Run optional styles shard: ${{ matrix.shard }}"
run: |
echo "Shard: ${{ matrix.shard }}"
echo "Tests: ${{ matrix.tests }}"
docker run --rm \
--security-opt seccomp=unconfined \
--shm-size=4g \
-v ${{ github.workspace }}/packages/producer/tests:/app/packages/producer/tests \
hyperframes-producer:test \
${{ matrix.tests }}
- name: Upload failure artifacts
if: failure()
uses: actions/upload-artifact@v4
with:
name: regression-failures-${{ matrix.shard }}
path: packages/producer/tests/*/failures/
if-no-files-found: ignore