test: use shared as integration-tests level (#12278)

This commit is contained in:
Harminder Virk
2025-04-28 18:41:19 +05:30
committed by GitHub
parent 5f4a859911
commit 552dc52228
27 changed files with 173 additions and 213 deletions

View File

@@ -15,13 +15,6 @@ jobs:
env:
TURBO_TOKEN: ${{ secrets.TURBO_TOKEN }}
TURBO_TEAM: ${{ secrets.TURBO_TEAM }}
outputs:
module-matrix: ${{ steps.set-module-matrix.outputs.matrix }}
module-chunks: ${{ steps.set-module-chunks.outputs.chunks }}
http-matrix: ${{ steps.set-http-matrix.outputs.matrix }}
http-chunks: ${{ steps.set-http-chunks.outputs.chunks }}
unit-tests-matrix: ${{ steps.set-unit-tests-matrix.outputs.matrix }}
unit-tests-chunks: ${{ steps.set-unit-tests-chunks.outputs.chunks }}
steps:
- name: Cancel Previous Runs
uses: styfle/cancel-workflow-action@0.11.0
@@ -34,7 +27,7 @@ jobs:
fetch-depth: 0
- name: Setup Node.js environment
uses: actions/setup-node@v3
uses: actions/setup-node@v4
with:
node-version: 20
cache: "yarn"
@@ -47,46 +40,11 @@ jobs:
with:
extension: pipeline
- id: set-module-chunks
name: Set Module Chunks
working-directory: integration-tests/modules
run: echo "chunks=$(yarn run jest --listTests --json | jq -cM '[_nwise(length / 2 | ceil)]')" >> $GITHUB_OUTPUT
- id: set-module-matrix
name: Set Module Matrix
run: echo "matrix=$(echo $CHUNKS | jq -cM 'to_entries | map(.key)')" >> $GITHUB_OUTPUT
env:
CHUNKS: ${{ steps.set-module-chunks.outputs.chunks }}
- id: set-http-chunks
name: Set HTTP Chunks
working-directory: integration-tests/http
run: echo "chunks=$(yarn run jest --listTests --json | jq -cM '[_nwise(length / 2 | ceil)]')" >> $GITHUB_OUTPUT
- id: set-http-matrix
name: Set HTTP Matrix
run: echo "matrix=$(echo $CHUNKS | jq -cM 'to_entries | map(.key)')" >> $GITHUB_OUTPUT
env:
CHUNKS: ${{ steps.set-http-chunks.outputs.chunks }}
- id: set-unit-tests-chunks
name: Set Unit Tests Chunks
run: echo "chunks=$(yarn workspaces list --json | jq -j '[inputs | .name]' | jq -r | jq -cM '[_nwise(length / 2 | ceil)]')" >> $GITHUB_OUTPUT
- id: set-unit-tests-matrix
name: Set Unit Tests Matrix
run: echo "matrix=$(echo $CHUNKS | jq -cM 'to_entries | map(.key)')" >> $GITHUB_OUTPUT
env:
CHUNKS: ${{ steps.set-unit-tests-chunks.outputs.chunks }}
unit-tests-matrix:
unit-tests:
needs: setup
runs-on: ubuntu-latest
name: Shard (${{ matrix.chunk }}) Unit Tests
strategy:
fail-fast: false
matrix:
chunk: ${{ fromJSON(needs.setup.outputs.unit-tests-matrix) }}
fail-fast: true
env:
TURBO_TOKEN: ${{ secrets.TURBO_TOKEN }}
TURBO_TEAM: ${{ secrets.TURBO_TEAM }}
@@ -106,13 +64,15 @@ jobs:
- name: Run unit tests
run: yarn test:chunk
env:
CHUNK: ${{ matrix.chunk }}
CHUNKS: ${{ needs.setup.outputs.unit-tests-chunks }}
integration-tests-packages:
integration-tests-packages-matrix:
needs: setup
name: Packages integration tests (${{ matrix.group }})
runs-on: ubuntu-latest
strategy:
fail-fast: true
matrix:
group: ["slow", "fast"]
env:
TURBO_TOKEN: ${{ secrets.TURBO_TOKEN }}
TURBO_TEAM: ${{ secrets.TURBO_TEAM }}
@@ -152,102 +112,100 @@ jobs:
extension: pipeline
- name: Run integration tests
run: yarn test:integration:packages
run: yarn test:integration:packages:${{ matrix.group }}
env:
DB_PASSWORD: postgres
DB_USERNAME: postgres
integration-tests-http-matrix:
needs: setup
name: Shard (${{ matrix.chunk }}) HTTP Integration Tests
runs-on: ubuntu-latest
strategy:
fail-fast: false
matrix:
chunk: ${{ fromJSON(needs.setup.outputs.http-matrix) }}
env:
TURBO_TOKEN: ${{ secrets.TURBO_TOKEN }}
TURBO_TEAM: ${{ secrets.TURBO_TEAM }}
services:
redis:
image: redis
options: >-
--health-cmd "redis-cli ping"
--health-interval 1s
--health-timeout 10s
--health-retries 10
ports:
- 6379:6379
postgres:
image: postgres
env:
POSTGRES_PASSWORD: postgres
POSTGRES_USER: postgres
options: >-
--health-cmd pg_isready
--health-interval 1s
--health-timeout 10s
--health-retries 10
ports:
- 5432:5432
steps:
- name: Checkout
uses: actions/checkout@v3
with:
fetch-depth: 0
- name: Install dependencies
uses: ./.github/actions/cache-deps
with:
extension: pipeline
- name: Run HTTP integration tests
run: yarn test:integration:http
env:
DB_USERNAME: postgres
DB_PASSWORD: postgres
NODE_OPTIONS: "--max_old_space_size=4096"
CHUNK: ${{ matrix.chunk }}
CHUNKS: ${{ needs.setup.outputs.http-chunks }}
integration-tests-http:
if: ${{ always() }}
runs-on: ubuntu-latest
needs: integration-tests-http-matrix
steps:
- run: exit 1
if: >-
${{
contains(needs.integration-tests-http-matrix.result, 'failure')
|| contains(needs.integration-tests-http-matrix.result, 'cancelled')
|| contains(needs.integration-tests-http-matrix.result, 'skipped')
}}
- run: exit 0
if: ${{ contains(needs.integration-tests-http-matrix.result, 'success') }}
unit-tests:
integration-tests-packages:
if: ${{ always() }}
runs-on: ubuntu-latest
needs: unit-tests-matrix
needs: integration-tests-packages-matrix
steps:
- run: exit 1
if: >-
${{
contains(needs.unit-tests-matrix.result, 'failure')
|| contains(needs.unit-tests-matrix.result, 'cancelled')
|| contains(needs.unit-tests-matrix.result, 'skipped')
contains(needs.integration-tests-packages-matrix.result, 'failure')
|| contains(needs.integration-tests-packages-matrix.result, 'cancelled')
|| contains(needs.integration-tests-packages-matrix.result, 'skipped')
}}
- run: exit 0
if: ${{ contains(needs.unit-tests-matrix.result, 'success') }}
if: ${{ contains(needs.integration-tests-packages-matrix.result, 'success') }}
integration-tests-http-matrix:
needs: setup
name: HTTP Integration Tests - Shard ${{ matrix.shard_index }}
runs-on: ubuntu-latest
strategy:
fail-fast: true
matrix:
shard_index: [1, 2, 3]
env:
TURBO_TOKEN: ${{ secrets.TURBO_TOKEN }}
TURBO_TEAM: ${{ secrets.TURBO_TEAM }}
services:
redis:
image: redis
options: >-
--health-cmd "redis-cli ping"
--health-interval 1s
--health-timeout 10s
--health-retries 10
ports:
- 6379:6379
postgres:
image: postgres
env:
POSTGRES_PASSWORD: postgres
POSTGRES_USER: postgres
options: >-
--health-cmd pg_isready
--health-interval 1s
--health-timeout 10s
--health-retries 10
ports:
- 5432:5432
steps:
- name: Checkout
uses: actions/checkout@v3
with:
fetch-depth: 0
- name: Install dependencies
uses: ./.github/actions/cache-deps
with:
extension: pipeline
- name: Run HTTP integration tests
run: yarn test:integration:http -- --shard=${{ matrix.shard_index }}/3
env:
DB_USERNAME: postgres
DB_PASSWORD: postgres
NODE_OPTIONS: "--max_old_space_size=4096"
integration-tests-http:
if: ${{ always() }}
runs-on: ubuntu-latest
needs: integration-tests-http-matrix
steps:
- run: exit 1
if: >-
${{
contains(needs.integration-tests-http-matrix.result, 'failure')
|| contains(needs.integration-tests-http-matrix.result, 'cancelled')
|| contains(needs.integration-tests-http-matrix.result, 'skipped')
}}
- run: exit 0
if: ${{ contains(needs.integration-tests-http-matrix.result, 'success') }}
integration-tests-modules-matrix:
needs: setup
name: Shard (${{ matrix.chunk }}) Module Integration Tests
name: Module Integration Tests - Shard ${{ matrix.shard_index }}
strategy:
matrix:
chunk: ${{ fromJSON(needs.setup.outputs.module-matrix) }}
shard_index: [1, 2]
runs-on: ubuntu-latest
env:
TURBO_TOKEN: ${{ secrets.TURBO_TOKEN }}
@@ -279,7 +237,7 @@ jobs:
extension: pipeline
- name: Run Modules integration tests
run: yarn test:integration:modules
run: yarn test:integration:modules -- --shard=${{ matrix.shard_index }}/3
env:
DB_USERNAME: postgres
DB_PASSWORD: postgres