Medusa Pipeline #34020
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: Medusa Pipeline | |
on: | |
push: | |
branches: | |
- develop | |
- v1.x | |
pull_request: | |
branches: | |
- develop | |
- v1.x | |
jobs: | |
setup: | |
runs-on: ubuntu-latest | |
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/[email protected] | |
with: | |
access_token: ${{ github.token }} | |
- name: Checkout | |
uses: actions/checkout@v3 | |
with: | |
fetch-depth: 0 | |
- name: Setup Node.js environment | |
uses: actions/setup-node@v3 | |
with: | |
node-version: 20 | |
cache: "yarn" | |
- name: Assert changed | |
run: ./scripts/assert-changed-files-actions.sh "packages" | |
- name: Install dependencies | |
uses: ./.github/actions/cache-deps | |
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: | |
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) }} | |
env: | |
TURBO_TOKEN: ${{ secrets.TURBO_TOKEN }} | |
TURBO_TEAM: ${{ secrets.TURBO_TEAM }} | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v3 | |
with: | |
fetch-depth: 0 | |
- name: Assert changed | |
run: ./scripts/assert-changed-files-actions.sh "packages" | |
- name: Install dependencies | |
uses: ./.github/actions/cache-deps | |
with: | |
extension: pipeline | |
- name: Run unit tests | |
run: yarn test:chunk | |
env: | |
CHUNK: ${{ matrix.chunk }} | |
CHUNKS: ${{ needs.setup.outputs.unit-tests-chunks }} | |
integration-tests-packages: | |
needs: setup | |
runs-on: ubuntu-latest | |
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 integration tests | |
run: yarn test:integration:packages | |
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: | |
if: ${{ always() }} | |
runs-on: ubuntu-latest | |
needs: unit-tests-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') | |
}} | |
- run: exit 0 | |
if: ${{ contains(needs.unit-tests-matrix.result, 'success') }} | |
integration-tests-modules-matrix: | |
needs: setup | |
name: Shard (${{ matrix.chunk }}) Module Integration Tests | |
strategy: | |
matrix: | |
chunk: ${{ fromJSON(needs.setup.outputs.module-matrix) }} | |
runs-on: ubuntu-latest | |
env: | |
TURBO_TOKEN: ${{ secrets.TURBO_TOKEN }} | |
TURBO_TEAM: ${{ secrets.TURBO_TEAM }} | |
services: | |
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 Modules integration tests | |
run: yarn test:integration:modules | |
env: | |
DB_USERNAME: postgres | |
DB_PASSWORD: postgres | |
NODE_OPTIONS: "--max_old_space_size=4096" | |
CHUNK: ${{ matrix.chunk }} | |
CHUNKS: ${{ needs.setup.outputs.module-chunks }} | |
integration-tests-modules: | |
if: ${{ always() }} | |
runs-on: ubuntu-latest | |
needs: integration-tests-modules-matrix | |
steps: | |
- run: exit 1 | |
if: >- | |
${{ | |
contains(needs.integration-tests-modules-matrix.result, 'failure') | |
|| contains(needs.integration-tests-modules-matrix.result, 'cancelled') | |
|| contains(needs.integration-tests-modules-matrix.result, 'skipped') | |
}} | |
- run: exit 0 | |
if: ${{ contains(needs.integration-tests-modules-matrix.result, 'success') }} |