Files
medusa-store/.github/workflows/action.yml
Adrien de Peretti afb40d437b chore(): Cleanup and organize deps (#13940)
* chore(): Cleanup and organize deps

* chore(): Cleanup and organize deps

* chore(): Cleanup and organize deps

* chore(): Cleanup and organize deps

* chore(): Cleanup and organize deps

* chore(): Cleanup and organize deps

* Create lucky-poets-scream.md

* chore(): Cleanup and organize deps

* chore(): Cleanup and organize deps

* chore(): Cleanup and organize deps

* chore(): Cleanup and organize deps

* dedupe snapshot this build

* split into 4 shard

* re configure packages integration tests

* re configure packages integration tests

* re configure packages integration tests

* re configure packages integration tests

* update scripts

* update scripts

* update scripts

* update scripts

* update scripts

* update scripts

* update scripts

* update scripts

* reduce shard for packages
2025-11-03 19:06:37 +01:00

339 lines
9.1 KiB
YAML

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 }}
steps:
- name: Cancel Previous Runs
uses: styfle/cancel-workflow-action@0.11.0
with:
access_token: ${{ github.token }}
- name: Checkout
uses: actions/checkout@v4
with:
fetch-depth: 0
- name: Setup Node.js environment
uses: actions/setup-node@v4
with:
node-version: 20
- name: Assert changed
run: ./scripts/assert-changed-files-actions.sh "packages"
- name: Install dependencies
uses: ./.github/actions/cache-deps
with:
extension: pipeline
- name: Upload build artifacts
uses: actions/upload-artifact@v4
with:
name: build-artifacts
path: |
packages/**/dist
integration-tests/**/dist
!packages/**/node_modules
retention-days: 1
unit-tests-matrix:
needs: setup
name: Unit Tests - Shard ${{ matrix.shard_index }}
runs-on: ubuntu-latest
strategy:
fail-fast: true
matrix:
shard_index: [1, 2, 3, 4]
env:
TURBO_TOKEN: ${{ secrets.TURBO_TOKEN }}
TURBO_TEAM: ${{ secrets.TURBO_TEAM }}
steps:
- name: Checkout
uses: actions/checkout@v4
with:
fetch-depth: 100
- name: Get number of CPU cores
id: cpu-cores
uses: SimenB/github-actions-cpu-cores@v2
- name: Install dependencies
uses: ./.github/actions/cache-deps
with:
extension: pipeline
skip-build: "true"
- name: Download build artifacts
uses: actions/download-artifact@v4
with:
name: build-artifacts
path: .
- name: Run unit tests
run: yarn test:chunk -- --shard=${{ matrix.shard_index }}/4 --maxWorkers=${{ steps.cpu-cores.outputs.count }} --passWithNoTests
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-packages-matrix:
needs: setup
name: Package 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@v4
with:
fetch-depth: 100
- name: Get number of CPU cores
id: cpu-cores
uses: SimenB/github-actions-cpu-cores@v2
- name: Install dependencies
uses: ./.github/actions/cache-deps
with:
extension: pipeline
skip-build: "true"
- name: Download build artifacts
uses: actions/download-artifact@v4
with:
name: build-artifacts
path: .
- name: Run package integration tests
run: yarn test:integration:packages -- --shard=${{ matrix.shard_index }}/3 --maxWorkers=${{ steps.cpu-cores.outputs.count }}
env:
DB_PASSWORD: postgres
DB_USERNAME: postgres
integration-tests-packages:
if: ${{ always() }}
runs-on: ubuntu-latest
needs: integration-tests-packages-matrix
steps:
- run: exit 1
if: >-
${{
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.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, 4]
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@v4
with:
fetch-depth: 100
- name: Get number of CPU cores
id: cpu-cores
uses: SimenB/github-actions-cpu-cores@v2
- name: Install dependencies
uses: ./.github/actions/cache-deps
with:
extension: pipeline
skip-build: "true"
- name: Download build artifacts
uses: actions/download-artifact@v4
with:
name: build-artifacts
path: .
- name: Run HTTP integration tests
run: yarn test:integration:http -- --shard=${{ matrix.shard_index }}/4 --maxWorkers=${{ steps.cpu-cores.outputs.count }}
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: Module Integration Tests - Shard ${{ matrix.shard_index }}
strategy:
matrix:
shard_index: [1, 2, 3, 4]
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@v4
with:
fetch-depth: 100
- name: Get number of CPU cores
id: cpu-cores
uses: SimenB/github-actions-cpu-cores@v2
- name: Install dependencies
uses: ./.github/actions/cache-deps
with:
extension: pipeline
skip-build: "true"
- name: Download build artifacts
uses: actions/download-artifact@v4
with:
name: build-artifacts
path: .
- name: Run Modules integration tests
run: yarn test:integration:modules -- --shard=${{ matrix.shard_index }}/4 --maxWorkers=${{ steps.cpu-cores.outputs.count }}
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') }}