feat(core): Update NestJS to v10, Apollo Server v4 #2228
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: Build & Test | |
on: | |
push: | |
branches: | |
- master | |
- major | |
- minor | |
- parallel-e2e | |
pull_request: | |
branches: | |
- master | |
- major | |
- minor | |
env: | |
CI: true | |
node: 18.x | |
jobs: | |
build: | |
name: build | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v3 | |
- name: Use Node.js ${{ env.node }} | |
uses: actions/setup-node@v3 | |
with: | |
node-version: ${{ env.node }} | |
# - uses: actions/cache@v3 | |
# id: yarn-cache # use this to check for `cache-hit` (`steps.yarn-cache.outputs.cache-hit != 'true'`) | |
# with: | |
# path: '**/node_modules' | |
# key: ${{ runner.os }}-yarn-${{ hashFiles('**/yarn.lock') }} | |
# restore-keys: | | |
# ${{ runner.os }}-yarn- | |
- name: Yarn install | |
# if: steps.yarn-cache.outputs.cache-hit != 'true' | |
run: yarn install | |
- name: Build | |
run: | | |
yarn bootstrap | |
yarn build | |
unit-tests: | |
name: unit tests | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v3 | |
- name: Use Node.js ${{ env.node }} | |
uses: actions/setup-node@v3 | |
with: | |
node-version: ${{ env.node }} | |
# - uses: actions/cache@v3 | |
# id: yarn-cache # use this to check for `cache-hit` (`steps.yarn-cache.outputs.cache-hit != 'true'`) | |
# with: | |
# path: '**/node_modules' | |
# key: ${{ runner.os }}-yarn-${{ hashFiles('**/yarn.lock') }} | |
# restore-keys: | | |
# ${{ runner.os }}-yarn- | |
- name: Yarn install | |
# if: steps.yarn-cache.outputs.cache-hit != 'true' | |
run: yarn install --prefer-offline | |
- name: Build | |
run: | | |
yarn bootstrap | |
yarn lerna run ci | |
- name: Unit tests | |
run: yarn test | |
e2e-tests: | |
name: e2e tests | |
runs-on: ubuntu-latest | |
services: | |
mariadb: | |
image: bitnami/mariadb:10.3 | |
env: | |
ALLOW_EMPTY_PASSWORD: yes | |
ports: | |
- 3306 | |
options: --health-cmd="mysqladmin ping" --health-interval=10s --health-timeout=5s --health-retries=3 | |
mysql: | |
image: bitnami/mysql:8.0 | |
env: | |
ALLOW_EMPTY_PASSWORD: yes | |
MYSQL_AUTHENTICATION_PLUGIN: mysql_native_password | |
ports: | |
- 3306 | |
options: --health-cmd="mysqladmin ping --silent" --health-interval=10s --health-timeout=20s --health-retries=10 | |
postgres: | |
image: postgres:12 | |
env: | |
POSTGRES_USER: admin | |
POSTGRES_PASSWORD: secret | |
ports: | |
- 5432 | |
options: --health-cmd=pg_isready --health-interval=10s --health-timeout=5s --health-retries=3 | |
elastic: | |
image: docker.elastic.co/elasticsearch/elasticsearch:7.1.1 | |
env: | |
discovery.type: single-node | |
bootstrap.memory_lock: true | |
ES_JAVA_OPTS: -Xms512m -Xmx512m | |
# Elasticsearch will force read-only mode when total available disk space is less than 5%. Since we will | |
# be running on a shared Azure instance with 84GB SSD, we easily go below 5% available even when there are still | |
# > 3GB free. So we set this value to an absolute one rather than a percentage to prevent all the Elasticsearch | |
# e2e tests from failing. | |
cluster.routing.allocation.disk.watermark.low: 500mb | |
cluster.routing.allocation.disk.watermark.high: 200mb | |
cluster.routing.allocation.disk.watermark.flood_stage: 100mb | |
ports: | |
- 9200 | |
options: --health-cmd="curl --silent --fail localhost:9200/_cluster/health" --health-interval=10s --health-timeout=5s --health-retries=3 | |
strategy: | |
fail-fast: false | |
matrix: | |
db: [sqljs, mariadb, mysql, postgres] | |
steps: | |
- uses: actions/checkout@v3 | |
- name: Use Node.js ${{ env.node }} | |
uses: actions/setup-node@v3 | |
with: | |
node-version: ${{ env.node }} | |
# - uses: actions/cache@v3 | |
# id: yarn-cache # use this to check for `cache-hit` (`steps.yarn-cache.outputs.cache-hit != 'true'`) | |
# with: | |
# path: '**/node_modules' | |
# key: ${{ runner.os }}-yarn-${{ hashFiles('**/yarn.lock') }} | |
# restore-keys: | | |
# ${{ runner.os }}-yarn- | |
- name: Yarn install | |
# if: steps.yarn-cache.outputs.cache-hit != 'true' | |
run: yarn install --prefer-offline | |
- name: Build | |
run: | | |
yarn bootstrap | |
yarn lerna run ci | |
- name: df | |
run: | | |
df -h | |
docker system df | |
- name: e2e tests | |
env: | |
E2E_MYSQL_PORT: ${{ job.services.mysql.ports['3306'] }} | |
E2E_MARIADB_PORT: ${{ job.services.mariadb.ports['3306'] }} | |
E2E_POSTGRES_PORT: ${{ job.services.postgres.ports['5432'] }} | |
E2E_ELASTIC_PORT: ${{ job.services.elastic.ports['9200'] }} | |
DB: ${{ matrix.db }} | |
run: yarn e2e |