fix: 双引号问题 #16
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, unlabeled, closed] | |
# Allows you to run this workflow manually from the Actions tab | |
workflow_dispatch: | |
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 | |
jobs: | |
build: | |
runs-on: ubuntu-latest | |
if: ${{ github.event.action == 'labeled' && github.event.label.name == 'run-ci' }} | |
steps: | |
- name: Checkout repository | |
uses: actions/checkout@v3 | |
- name: Use Node.js 18.18.2 | |
uses: actions/setup-node@v3 | |
with: | |
node-version: 18.18.2 | |
# Cache server node modules to speed up subsequent builds | |
- name: Cache server node modules | |
uses: actions/cache@v3 | |
with: | |
path: server/node_modules | |
key: ${{ runner.os }}-node-server-${{ hashFiles('server/package-lock.json') }} | |
restore-keys: | | |
${{ runner.os }}-node-server- | |
# Cache frontend node modules to speed up subsequent builds | |
- name: Cache frontend node modules | |
uses: actions/cache@v3 | |
with: | |
path: frontend/node_modules | |
key: ${{ runner.os }}-node-frontend-${{ hashFiles('frontend/package-lock.json') }} | |
restore-keys: | | |
${{ runner.os }}-node-frontend- | |
# Cache plugins node modules to speed up subsequent builds | |
- name: Cache plugins node modules | |
uses: actions/cache@v3 | |
with: | |
path: plugins/node_modules | |
key: ${{ runner.os }}-node-plugins-${{ hashFiles('plugins/package-lock.json') }} | |
restore-keys: | | |
${{ runner.os }}-node-plugins- | |
- name: Setup Python 3 | |
uses: actions/setup-python@v2 | |
with: | |
python-version: 3.x | |
- name: Install Python dependencies | |
run: | | |
python -m pip install --upgrade pip | |
pip install setuptools | |
- name: Install Node.js dependencies | |
run: npm ci | |
- name: Build | |
run: npm run build | |
- name: Frontend ci | |
run: | | |
npm --prefix frontend ci | |
- name: Server ci | |
run: npm --prefix server ci | |
- name: plugins ci | |
run: npm --prefix plugins ci | |
# Upload plugins build artifacts | |
- name: Archive specific plugins files and folders | |
uses: actions/upload-artifact@v4 | |
with: | |
name: plugins-files | |
path: | | |
plugins/dist | |
plugins/client.js | |
plugins/node_modules | |
plugins/packages/common | |
plugins/package.json | |
# Upload server build artifacts | |
- name: Archive specific server files and folders | |
uses: actions/upload-artifact@v4 | |
with: | |
name: server-files | |
path: | | |
server/dist | |
# Upload frontend build artifacts | |
- name: Archive specific frontend files and folders | |
uses: actions/upload-artifact@v4 | |
with: | |
name: frontend-files | |
path: | | |
frontend/build | |
lint-for-plugins: | |
runs-on: ubuntu-latest | |
needs: build | |
steps: | |
- name: Checkout repository | |
uses: actions/checkout@v3 | |
- name: Use Node.js 18.18.2 | |
uses: actions/setup-node@v3 | |
with: | |
node-version: 18.18.2 | |
# Cache server node modules to speed up subsequent builds | |
- name: Cache server node modules | |
uses: actions/cache@v3 | |
with: | |
path: server/node_modules | |
key: ${{ runner.os }}-node-server-${{ hashFiles('server/package-lock.json') }} | |
restore-keys: | | |
${{ runner.os }}-node-server- | |
# Cache frontend node modules to speed up subsequent builds | |
- name: Cache frontend node modules | |
uses: actions/cache@v3 | |
with: | |
path: frontend/node_modules | |
key: ${{ runner.os }}-node-frontend-${{ hashFiles('frontend/package-lock.json') }} | |
restore-keys: | | |
${{ runner.os }}-node-frontend- | |
# Cache plugins node modules to speed up subsequent builds | |
- name: Cache plugins node modules | |
uses: actions/cache@v3 | |
with: | |
path: plugins/node_modules | |
key: ${{ runner.os }}-node-plugins-${{ hashFiles('plugins/package-lock.json') }} | |
restore-keys: | | |
${{ runner.os }}-node-plugins- | |
- name: Setup Python 3 | |
uses: actions/setup-python@v2 | |
with: | |
python-version: 3.x | |
- name: Install Python dependencies | |
run: | | |
python -m pip install --upgrade pip | |
pip install setuptools | |
# Download plugins build artifacts | |
- name: Download plugins files and folders | |
uses: actions/download-artifact@v4 | |
with: | |
name: plugins-files | |
- name: Running for plugins | |
run: | | |
npm --prefix plugins run lint | |
lint-for-frontend: | |
runs-on: ubuntu-latest | |
needs: build | |
steps: | |
- name: Checkout repository | |
uses: actions/checkout@v3 | |
- name: Use Node.js 18.18.2 | |
uses: actions/setup-node@v3 | |
with: | |
node-version: 18.18.2 | |
# Cache server node modules to speed up subsequent builds | |
- name: Cache server node modules | |
uses: actions/cache@v3 | |
with: | |
path: server/node_modules | |
key: ${{ runner.os }}-node-server-${{ hashFiles('server/package-lock.json') }} | |
restore-keys: | | |
${{ runner.os }}-node-server- | |
# Cache frontend node modules to speed up subsequent builds | |
- name: Cache frontend node modules | |
uses: actions/cache@v3 | |
with: | |
path: frontend/node_modules | |
key: ${{ runner.os }}-node-frontend-${{ hashFiles('frontend/package-lock.json') }} | |
restore-keys: | | |
${{ runner.os }}-node-frontend- | |
# Cache plugins node modules to speed up subsequent builds | |
- name: Cache plugins node modules | |
uses: actions/cache@v3 | |
with: | |
path: plugins/node_modules | |
key: ${{ runner.os }}-node-plugins-${{ hashFiles('plugins/package-lock.json') }} | |
restore-keys: | | |
${{ runner.os }}-node-plugins- | |
- name: Setup Python 3 | |
uses: actions/setup-python@v2 | |
with: | |
python-version: 3.x | |
- name: Install Python dependencies | |
run: | | |
python -m pip install --upgrade pip | |
pip install setuptools | |
# Download frontend build artifacts | |
- name: Download frontend files and folders | |
uses: actions/download-artifact@v4 | |
with: | |
name: frontend-files | |
- name: Running for frontend | |
run: | | |
npm --prefix frontend run lint | |
lint-for-server: | |
runs-on: ubuntu-latest | |
needs: build | |
steps: | |
- name: Checkout repository | |
uses: actions/checkout@v3 | |
- name: Use Node.js 18.18.2 | |
uses: actions/setup-node@v3 | |
with: | |
node-version: 18.18.2 | |
# Cache server node modules to speed up subsequent builds | |
- name: Cache server node modules | |
uses: actions/cache@v3 | |
with: | |
path: server/node_modules | |
key: ${{ runner.os }}-node-server-${{ hashFiles('server/package-lock.json') }} | |
restore-keys: | | |
${{ runner.os }}-node-server- | |
# Cache frontend node modules to speed up subsequent builds | |
- name: Cache frontend node modules | |
uses: actions/cache@v3 | |
with: | |
path: frontend/node_modules | |
key: ${{ runner.os }}-node-frontend-${{ hashFiles('frontend/package-lock.json') }} | |
restore-keys: | | |
${{ runner.os }}-node-frontend- | |
# Cache plugins node modules to speed up subsequent builds | |
- name: Cache plugins node modules | |
uses: actions/cache@v3 | |
with: | |
path: plugins/node_modules | |
key: ${{ runner.os }}-node-plugins-${{ hashFiles('plugins/package-lock.json') }} | |
restore-keys: | | |
${{ runner.os }}-node-plugins- | |
- name: Setup Python 3 | |
uses: actions/setup-python@v2 | |
with: | |
python-version: 3.x | |
- name: Install Python dependencies | |
run: | | |
python -m pip install --upgrade pip | |
pip install setuptools | |
# Download server build artifacts | |
- name: Download server files and folders | |
uses: actions/download-artifact@v4 | |
with: | |
name: server-files | |
- name: Running for server | |
run: | | |
npm --prefix server run lint | |
unit-test: | |
runs-on: ubuntu-latest | |
timeout-minutes: 30 # Set a timeout of 30 minutes | |
needs: build | |
container: node:18.18.2-bullseye | |
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-client | |
- 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 | |
timeout-minutes: 30 # Set a timeout of 30 minutes | |
needs: build | |
container: node:18.18.2-bullseye | |
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-client | |
- 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 |