Skip to content

Workflow file for this run

# This workflow will do a clean install of node dependencies, build the source code and run tests across different versions of node
# For more information see: https://help.github.com/actions/language-and-framework-guides/using-nodejs-with-github-actions
name: Build & Release
on:
push:
branches: [production, alpha, beta, rc]
pull_request:
branches: [production, alpha, beta, rc]
types: [opened, synchronize, closed]
concurrency:
group: ${{ github.head_ref || github.run_id }}
cancel-in-progress: true
jobs:
lint:
runs-on: ubuntu-latest
strategy:
matrix:
node-version: [20.12.2]
steps:
- uses: actions/checkout@v4
- name: Use Node.js ${{ matrix.node-version }}
uses: actions/setup-node@v4
with:
node-version: ${{ matrix.node-version }}
cache: "yarn"
- name: Install dependencies
run: yarn install --immutable --network-timeout 500000
- name: Run lint
run: yarn test:lint
test-integration:
runs-on: ubuntu-latest
strategy:
matrix:
node-version: [20.12.2]
steps:
- uses: actions/checkout@v4
with:
fetch-depth: 0
- name: Use Node.js ${{ matrix.node-version }}
uses: actions/setup-node@v4
with:
node-version: ${{ matrix.node-version }}
cache: "yarn"
- name: Install dependencies
run: yarn install --immutable --network-timeout 500000
- name: Run build
run: yarn tsc --build
env:
FORCE_COLOR: true
- name: Run test
run: yarn test:integration
env:
FORCE_COLOR: true
- name: Upload vitest config files
uses: actions/upload-artifact@v4
with:
name: vitest-config-integration
overwrite: true
path: |
team.json
packages/platform/platform-express/vitest.config.mts
packages/platform/platform-koa/vitest.config.mts
continue-on-error: true
test-envs:
runs-on: ${{ matrix.os }}
strategy:
matrix:
os: [ubuntu-latest, macos-latest, windows-latest]
node-version: [20.12.2]
steps:
- uses: actions/checkout@v4
with:
fetch-depth: 0
- name: Use Node.js ${{ matrix.node-version }}
uses: actions/setup-node@v4
with:
node-version: ${{ matrix.node-version }}
cache: "yarn"
- name: Install dependencies
run: yarn install --immutable --network-timeout 500000
- name: Run build
run: yarn tsc --build
env:
FORCE_COLOR: true
- name: Run test
run: yarn test:integration
env:
FORCE_COLOR: true
test-core:
runs-on: ubuntu-latest
strategy:
matrix:
node-version: [20.12.2]
steps:
- uses: actions/checkout@v4
with:
fetch-depth: 0
- name: Use Node.js ${{ matrix.node-version }}
uses: actions/setup-node@v4
with:
node-version: ${{ matrix.node-version }}
cache: "yarn"
- name: Install dependencies
run: yarn install --immutable --network-timeout 500000
- name: Run build
run: yarn tsc --build
- name: Run test
run: yarn test:core --since origin/production
- name: Upload vitest config files
uses: actions/upload-artifact@v4
with:
name: vitest-config-core
path: |
team.json
packages/{core,di,engines}/vitest.config.mts
packages/platform/platform-http/vitest.config.mts
packages/utils/normalize-path/vitest.config.mts
continue-on-error: true
test-specs:
runs-on: ubuntu-latest
strategy:
matrix:
node-version: [20.12.2]
steps:
- uses: actions/checkout@v4
with:
fetch-depth: 0
- name: Use Node.js ${{ matrix.node-version }}
uses: actions/setup-node@v4
with:
node-version: ${{ matrix.node-version }}
cache: "yarn"
- name: Install dependencies
run: yarn install --immutable --network-timeout 500000
- name: Run build
run: yarn tsc --build
- name: Run test
run: yarn test:specs --since origin/production
- name: Upload vitest config files
uses: actions/upload-artifact@v4
with:
name: vitest-config-specs
path: |
team.json
packages/specs/*/vitest.config.mts
continue-on-error: true
test-platform:
runs-on: ubuntu-latest
strategy:
matrix:
node-version: [20.12.2]
steps:
- uses: actions/checkout@v4
with:
fetch-depth: 0
- name: Use Node.js ${{ matrix.node-version }}
uses: actions/setup-node@v4
with:
node-version: ${{ matrix.node-version }}
cache: "yarn"
- name: Install dependencies
run: yarn install --immutable --network-timeout 500000
- name: Run build
run: yarn tsc --build
- name: Run test
run: yarn test:platform --since origin/production
- name: Upload vitest config files
uses: actions/upload-artifact@v4
with:
name: vitest-config-platform
path: |
team.json
packages/platform/platform-*/vitest.config.mts
!packages/platform/platform-express/vitest.config.mts
!packages/platform/platform-koa/vitest.config.mts
test-orm:
runs-on: ubuntu-latest
strategy:
matrix:
node-version: [20.12.2]
steps:
- uses: actions/checkout@v4
with:
fetch-depth: 0
- name: Use Node.js ${{ matrix.node-version }}
uses: actions/setup-node@v4
with:
node-version: ${{ matrix.node-version }}
cache: "yarn"
- name: Install dependencies
run: yarn install --immutable --network-timeout 500000
- name: Run build
run: yarn tsc --build
- name: Run test
run: yarn test:orm --since origin/production
- name: Upload vitest config files
uses: actions/upload-artifact@v4
with:
name: vitest-config
path: |
team.json
packages/orm/*/vitest.config.mts
test-graphql:
runs-on: ubuntu-latest
strategy:
matrix:
node-version: [20.12.2]
steps:
- uses: actions/checkout@v4
with:
fetch-depth: 0
- name: Use Node.js ${{ matrix.node-version }}
uses: actions/setup-node@v4
with:
node-version: ${{ matrix.node-version }}
cache: "yarn"
- name: Install dependencies
run: yarn install --immutable --network-timeout 500000
- name: Run build
run: yarn tsc --build
- name: Run test
run: yarn test:graphql --since origin/production
- name: Upload vitest config files
uses: actions/upload-artifact@v4
with:
name: vitest-config-graphql
path: |
team.json
packages/graphql/*/vitest.config.mts
test-security:
runs-on: ubuntu-latest
strategy:
matrix:
node-version: [20.12.2]
steps:
- uses: actions/checkout@v4
with:
fetch-depth: 0
- name: Use Node.js ${{ matrix.node-version }}
uses: actions/setup-node@v4
with:
node-version: ${{ matrix.node-version }}
cache: "yarn"
- name: Install dependencies
run: yarn install --immutable --network-timeout 500000
- name: Run build
run: yarn tsc --build
- name: Run test
run: yarn test:security --since origin/production
- name: Upload vitest config files
uses: actions/upload-artifact@v4
with:
name: vitest-config-security
path: |
team.json
packages/security/*/vitest.config.mts
test-third-parties:
runs-on: ubuntu-latest
strategy:
matrix:
node-version: [20.12.2]
steps:
- uses: actions/checkout@v4
with:
fetch-depth: 0
- name: Use Node.js ${{ matrix.node-version }}
uses: actions/setup-node@v4
with:
node-version: ${{ matrix.node-version }}
cache: "yarn"
- name: Install dependencies
run: yarn install --immutable --network-timeout 500000
- name: Run build
run: yarn tsc --build
- name: Run test
run: yarn test:third-parties --since origin/production
- name: Upload vitest config files
uses: actions/upload-artifact@v4
with:
name: vitest-config-third-parties
path: |
team.json
packages/third-parties/*/vitest.config.mts
test-download-artifacts:
runs-on: ubuntu-latest
needs:
[lint, test-core, test-specs, test-platform, test-integration, test-envs, test-orm, test-security, test-graphql, test-third-parties]
if: github.event_name == 'pull_request'
strategy:
matrix:
node-version: [20.x]
steps:
- uses: actions/checkout@v4
- name: Use Node.js ${{ matrix.node-version }}
uses: actions/setup-node@v4
with:
node-version: ${{ matrix.node-version }}
cache: "yarn"
- name: Download Core vitest config files
uses: actions/download-artifact@v4
with:
path: .
pattern: vitest-config-*
merge-multiple: true
- name: git status
run: git status
- name: ls
run: ls -la
deploy-packages:
runs-on: ubuntu-latest
needs:
[lint, test-core, test-specs, test-platform, test-integration, test-envs, test-orm, test-security, test-graphql, test-third-parties]
if: github.event_name != 'pull_request' && contains('
refs/heads/production
refs/heads/alpha
refs/heads/beta
refs/heads/rc
', github.ref)
strategy:
matrix:
node-version: [20.x]
steps:
- uses: actions/checkout@v4
- name: Use Node.js ${{ matrix.node-version }}
uses: actions/setup-node@v4
with:
node-version: ${{ matrix.node-version }}
cache: "yarn"
- name: Install dependencies
run: yarn install --network-timeout 500000
- name: Download Core vitest config files
uses: actions/download-artifact@v4
with:
pattern: vitest-config-*
merge-multiple: true
- name: "Git status"
run: git status
- name: Release packages
env:
CI: true
GH_TOKEN: ${{ secrets.GH_TOKEN }}
NPM_TOKEN: ${{ secrets.NPM_TOKEN }}
SLACK_WEBHOOK: ${{ secrets.SLACK_WEBHOOK }}
run: YARN_ENABLE_IMMUTABLE_INSTALLS=false yarn release
- name: "Trigger Website workflow"
run: |
curl -X POST https://api.github.com/repos/tsedio/tsed/actions/workflows/website.yml/dispatches \
-H 'Accept: application/vnd.github.everest-preview+json' \
-H 'Authorization: Bearer ${{secrets.GH_TOKEN}}' \
--data '{"ref": "${{github.ref_name}}"}'