mirror of
https://github.com/heygen-com/hyperframes.git
synced 2026-10-30 09:16:55 +00:00
ci: shard the Test job by package group (#4286)
* ci: shard the Test job by package group * ci: keep support shard history for ratchet
This commit is contained in:
+71
-16
@@ -338,21 +338,13 @@ jobs:
|
||||
- run: bun run --filter '*' typecheck
|
||||
- run: bun run typecheck:scripts
|
||||
|
||||
test:
|
||||
name: Test
|
||||
needs: [changes, producer-source-tests]
|
||||
# Keep the existing required `Test` context authoritative for producer
|
||||
# failures too. The dedicated producer matrix remains parallel and legible,
|
||||
# while this job fails closed if either lane fails or is cancelled.
|
||||
if: always() && needs.changes.outputs.code == 'true'
|
||||
test-studio:
|
||||
name: Test (studio)
|
||||
needs: changes
|
||||
if: needs.changes.outputs.code == 'true'
|
||||
runs-on: ubuntu-latest
|
||||
timeout-minutes: 10
|
||||
steps:
|
||||
- name: Require producer source tests
|
||||
if: needs.producer-source-tests.result != 'success'
|
||||
run: |
|
||||
echo "::error::Producer unit/integration tests did not succeed."
|
||||
exit 1
|
||||
- uses: actions/checkout@34e114876b0b11c390a56381ad16ebd13914f8d5 # v4
|
||||
with:
|
||||
lfs: true
|
||||
@@ -368,9 +360,51 @@ jobs:
|
||||
- run: bun run --filter '@hyperframes/{parsers,lint,studio-server}' build
|
||||
- run: bun run --cwd packages/core build
|
||||
- run: bun run --cwd packages/core build:hyperframes-runtime
|
||||
# After the builds: the preview scripts drive the producer, which imports
|
||||
# @hyperframes/core from dist, so running these first fails on a missing
|
||||
# module rather than on anything the test is actually checking.
|
||||
- run: bun run --cwd packages/studio test
|
||||
|
||||
test-runtime:
|
||||
name: Test (runtime)
|
||||
needs: changes
|
||||
if: needs.changes.outputs.code == 'true'
|
||||
runs-on: ubuntu-latest
|
||||
timeout-minutes: 10
|
||||
steps:
|
||||
- uses: actions/checkout@34e114876b0b11c390a56381ad16ebd13914f8d5 # v4
|
||||
with:
|
||||
lfs: true
|
||||
- uses: oven-sh/setup-bun@0c5077e51419868618aeaa5fe8019c62421857d6 # v2
|
||||
- uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020 # v4
|
||||
with:
|
||||
node-version: 22
|
||||
- uses: ./.github/actions/install-ffmpeg-linux
|
||||
- uses: ./.github/actions/prepare-ffmpeg-bin
|
||||
- run: bash scripts/ci/install-workspace-dependencies.sh
|
||||
- run: bun run --filter '@hyperframes/{parsers,lint,studio-server}' build
|
||||
- run: bun run --cwd packages/core build
|
||||
- run: bun run --cwd packages/core build:hyperframes-runtime
|
||||
- run: bun run --filter '@hyperframes/{cli,core,engine}' test
|
||||
|
||||
test-support:
|
||||
name: Test (support)
|
||||
needs: changes
|
||||
if: needs.changes.outputs.code == 'true'
|
||||
runs-on: ubuntu-latest
|
||||
timeout-minutes: 10
|
||||
steps:
|
||||
- uses: actions/checkout@34e114876b0b11c390a56381ad16ebd13914f8d5 # v4
|
||||
with:
|
||||
lfs: true
|
||||
fetch-depth: 0
|
||||
- uses: oven-sh/setup-bun@0c5077e51419868618aeaa5fe8019c62421857d6 # v2
|
||||
- uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020 # v4
|
||||
with:
|
||||
node-version: 22
|
||||
- uses: ./.github/actions/install-ffmpeg-linux
|
||||
- uses: ./.github/actions/prepare-ffmpeg-bin
|
||||
- run: bash scripts/ci/install-workspace-dependencies.sh
|
||||
- run: bun run --filter '@hyperframes/{parsers,lint,studio-server}' build
|
||||
- run: bun run --cwd packages/core build
|
||||
- run: bun run --cwd packages/core build:hyperframes-runtime
|
||||
- name: Install Chrome for catalog preview tests
|
||||
id: catalog-chrome
|
||||
uses: browser-actions/setup-chrome@c785b87e244131f27c9f19c1a33e2ead956ab7ce # v1
|
||||
@@ -379,7 +413,28 @@ jobs:
|
||||
- run: bun run test:scripts
|
||||
env:
|
||||
HYPERFRAMES_BROWSER_PATH: ${{ steps.catalog-chrome.outputs.chrome-path }}
|
||||
- run: bun run --filter '!@hyperframes/producer' test
|
||||
- run: bun run --filter '@hyperframes/{lint,parsers,studio-server,sdk,player,aws-lambda,gcp-cloud-run,sdk-playground,shader-transitions}' test
|
||||
|
||||
test:
|
||||
name: Test
|
||||
needs: [changes, producer-source-tests, test-studio, test-runtime, test-support]
|
||||
# Keep the existing required `Test` context authoritative for producer
|
||||
# failures too. It also fails closed if any package shard fails or is cancelled.
|
||||
if: always() && needs.changes.outputs.code == 'true'
|
||||
runs-on: ubuntu-latest
|
||||
timeout-minutes: 3
|
||||
steps:
|
||||
- name: Require producer source tests
|
||||
if: needs.producer-source-tests.result != 'success'
|
||||
run: |
|
||||
echo "::error::Producer unit/integration tests did not succeed."
|
||||
exit 1
|
||||
- name: Require package test shards
|
||||
if: needs.test-studio.result != 'success' || needs.test-runtime.result != 'success' || needs.test-support.result != 'success'
|
||||
run: |
|
||||
echo "::error::A package test shard did not succeed."
|
||||
echo "studio=${{ needs.test-studio.result }} runtime=${{ needs.test-runtime.result }} support=${{ needs.test-support.result }}"
|
||||
exit 1
|
||||
|
||||
producer-source-tests:
|
||||
name: "Producer: ${{ matrix.lane }} tests"
|
||||
|
||||
Reference in New Issue
Block a user