Skip to content

feat(modules-sdk): External Modules #24370

feat(modules-sdk): External Modules

feat(modules-sdk): External Modules #24370

Workflow file for this run

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 }}
api-matrix: ${{ steps.set-api-matrix.outputs.matrix }}
api-chunks: ${{ steps.set-api-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: "16.10.0"
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-api-chunks
name: Set API Chunks
working-directory: integration-tests/api
run: echo "chunks=$(yarn run jest --listTests --json | jq -cM '[_nwise(length / 2 | ceil)]')" >> $GITHUB_OUTPUT
- id: set-api-matrix
name: Set API Matrix
run: echo "matrix=$(echo $CHUNKS | jq -cM 'to_entries | map(.key)')" >> $GITHUB_OUTPUT
env:
CHUNKS: ${{ steps.set-api-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-api-matrix:
# needs: setup
# name: Shard (${{ matrix.chunk }}) API Integration Tests
# runs-on: ubuntu-latest
# strategy:
# fail-fast: false
# matrix:
# chunk: ${{ fromJSON(needs.setup.outputs.api-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 API integration tests
# run: yarn test:integration:api
# env:
# DB_USERNAME: postgres
# DB_PASSWORD: postgres
# NODE_OPTIONS: "--max_old_space_size=4096"
# CHUNK: ${{ matrix.chunk }}
# CHUNKS: ${{ needs.setup.outputs.api-chunks }}
#integration-tests-api:
# if: ${{ always() }}
# runs-on: ubuntu-latest
# needs: integration-tests-api-matrix
# steps:
# - run: exit 1
# if: >-
# ${{
# contains(needs.integration-tests-api-matrix.result, 'failure')
# || contains(needs.integration-tests-api-matrix.result, 'cancelled')
# || contains(needs.integration-tests-api-matrix.result, 'skipped')
# }}
# - run: exit 0
# if: ${{ contains(needs.integration-tests-api-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') }}