Merge pull request #9833 from ToolJet/main #11
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: CI | |
# Controls when the workflow will run | |
on: | |
push: | |
branches: [develop, main] | |
pull_request: | |
types: [labeled, opened, synchronize, reopened] | |
# Allows you to run this workflow manually from the Actions tab | |
workflow_dispatch: | |
concurrency: | |
group: ${{ github.workflow }}-${{ (github.ref == 'refs/heads/develop' || github.ref == 'refs/heads/main') && github.run_number || github.ref }} | |
cancel-in-progress: true | |
env: | |
FORCE_COLOR: true | |
NODE_OPTIONS: "--max-old-space-size=4096" | |
LOCKBOX_MASTER_KEY: lockbox-master-key | |
SECRET_KEY_BASE: secrret-key-base | |
NODE_ENV: test | |
PG_HOST: postgres | |
PG_PORT: 5432 | |
PG_USER: postgres | |
PG_PASS: postgres | |
PG_DB: tooljet_test | |
# A workflow run is made up of one or more jobs that can run sequentially or in parallel | |
jobs: | |
build: | |
runs-on: ubuntu-latest | |
if: | | |
contains(github.event.pull_request.labels.*.name, 'run-ci') || | |
github.ref == 'refs/heads/main' || | |
github.ref == 'refs/heads/develop' | |
steps: | |
# Checks-out your repository under $GITHUB_WORKSPACE, so your job can access it | |
- uses: actions/checkout@v3 | |
- name: Use Node.js 18.18.2 | |
uses: actions/setup-node@v3 | |
with: | |
node-version: 18.18.2 | |
- name: Cache node modules | |
uses: actions/cache@v3 | |
env: | |
cache-name: cache-node-modules | |
with: | |
# npm cache files are stored in `~/.npm` on Linux/macOS | |
path: ~/.npm | |
key: ${{ runner.os }}-build-${{ env.cache-name }}-${{ hashFiles('**/package-lock.json') }} | |
restore-keys: | | |
${{ runner.os }}-build-${{ env.cache-name }}- | |
${{ runner.os }}-build- | |
${{ runner.os }}- | |
- run: npm run build | |
lint: | |
runs-on: ubuntu-latest | |
if: | | |
contains(github.event.pull_request.labels.*.name, 'run-ci') || | |
github.ref == 'refs/heads/main' || | |
github.ref == 'refs/heads/develop' | |
steps: | |
# Checks-out your repository under $GITHUB_WORKSPACE, so your job can access it | |
- uses: actions/checkout@v3 | |
- name: Use Node.js 18.18.2 | |
uses: actions/setup-node@v3 | |
with: | |
node-version: 18.18.2 | |
- name: Cache node modules | |
uses: actions/cache@v3 | |
env: | |
cache-name: cache-node-modules | |
with: | |
# npm cache files are stored in `~/.npm` on Linux/macOS | |
path: ~/.npm | |
key: ${{ runner.os }}-build-${{ env.cache-name }}-${{ hashFiles('**/package-lock.json') }} | |
restore-keys: | | |
${{ runner.os }}-build-${{ env.cache-name }}- | |
${{ runner.os }}-build- | |
${{ runner.os }}- | |
- run: npm run build:plugins | |
- run: npm --prefix frontend ci && npm --prefix server ci && npm --prefix plugins ci | |
- run: npm --prefix server run lint && npm --prefix frontend run lint && npm --prefix plugins run lint | |
unit-test: | |
runs-on: ubuntu-latest | |
needs: build | |
container: node:18.18.2-buster | |
services: | |
postgres: | |
image: postgres | |
env: | |
POSTGRES_PASSWORD: postgres | |
# Set health checks to wait until postgres has started | |
options: >- | |
--health-cmd pg_isready | |
--health-interval 10s | |
--health-timeout 5s | |
--health-retries 5 | |
steps: | |
- uses: actions/checkout@v3 | |
- name: Cache node modules | |
uses: actions/cache@v3 | |
env: | |
cache-name: cache-node-modules | |
with: | |
# npm cache files are stored in `~/.npm` on Linux/macOS | |
path: ~/.npm | |
key: ${{ runner.os }}-build-${{ env.cache-name }}-${{ hashFiles('**/package-lock.json') }} | |
restore-keys: | | |
${{ runner.os }}-build-${{ env.cache-name }}- | |
${{ runner.os }}-build- | |
${{ runner.os }}- | |
- run: apt update && apt install -y postgresql | |
- run: npm --prefix plugins ci | |
- run: npm --prefix plugins run create:client && npm --prefix plugins run create:server | |
- run: npm --prefix plugins run build:packages && npm --prefix plugins run build:server | |
- run: npm --prefix server ci | |
- run: npm --prefix server run db:create | |
- run: npm --prefix server run db:migrate | |
- run: npm --prefix server run test | |
e2e-test: | |
runs-on: ubuntu-latest | |
needs: build | |
container: node:18.18.2-buster | |
services: | |
postgres: | |
image: postgres | |
env: | |
POSTGRES_PASSWORD: postgres | |
# Set health checks to wait until postgres has started | |
options: >- | |
--health-cmd pg_isready | |
--health-interval 10s | |
--health-timeout 5s | |
--health-retries 5 | |
steps: | |
- uses: actions/checkout@v3 | |
- name: Cache node modules | |
uses: actions/cache@v3 | |
env: | |
cache-name: cache-node-modules | |
with: | |
# npm cache files are stored in `~/.npm` on Linux/macOS | |
path: ~/.npm | |
key: ${{ runner.os }}-build-${{ env.cache-name }}-${{ hashFiles('**/package-lock.json') }} | |
restore-keys: | | |
${{ runner.os }}-build-${{ env.cache-name }}- | |
${{ runner.os }}-build- | |
${{ runner.os }}- | |
- run: apt update && apt install -y postgresql | |
- run: npm --prefix plugins ci | |
- run: npm --prefix plugins run create:client && npm --prefix plugins run create:server | |
- run: npm --prefix plugins run build:packages && npm --prefix plugins run build:server | |
- run: npm --prefix server ci | |
- run: npm --prefix server run db:create | |
- run: npm --prefix server run db:migrate | |
- run: NODE_OPTIONS=--max_old_space_size=8096 npm --prefix server run test:e2e -- --silent --testTimeout=20000 |