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/cancel-workflow-action@0.11.0 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') }}