From e37099369d156c081f3d38535977aede9e411bdd Mon Sep 17 00:00:00 2001 From: Wing-Kam Wong Date: Mon, 28 Aug 2023 11:59:01 +0800 Subject: [PATCH] refactor(workflows): simplify workflow & use pnpm store --- .github/workflows/ci-cd.yml | 61 +++++++------------ .../workflows/playwright-test-workflow.yml | 12 +--- .github/workflows/release-executables.yml | 20 +++--- .../workflows/release-timely-executables.yml | 24 ++++---- .github/workflows/unit-test.yml | 13 +--- .github/workflows/update-sdk-path.yml | 6 +- 6 files changed, 48 insertions(+), 88 deletions(-) diff --git a/.github/workflows/ci-cd.yml b/.github/workflows/ci-cd.yml index af9289b532..2b6a733682 100644 --- a/.github/workflows/ci-cd.yml +++ b/.github/workflows/ci-cd.yml @@ -45,28 +45,20 @@ jobs: uses: actions/checkout@v3 with: fetch-depth: 0 - - name: Cache node modules - uses: actions/cache@v3 - env: - cache-name: cache-node-modules - + - name: Get pnpm store directory + shell: bash + run: | + echo "STORE_PATH=$(pnpm store path --silent)" >> $GITHUB_ENV + - uses: actions/cache@v3 + name: Setup pnpm cache with: - # pnpm cache files are stored in `~/.pnpm` on Linux/macOS - path: ~/.pnpm - key: ${{ runner.os }}-build-${{ env.cache-name }}-${{ hashFiles('**/package-lock.json') }} + path: ${{ env.STORE_PATH }} + key: ${{ runner.os }}-pnpm-store-${{ hashFiles('**/pnpm-lock.yaml') }} restore-keys: | - ${{ runner.os }}-build-${{ env.cache-name }}- - ${{ runner.os }}-build- - ${{ runner.os }}- - - name: install dependencies nocodb-sdk - working-directory: ./packages/nocodb-sdk - run: pnpm install - - name: build nocodb-sdk - working-directory: ./packages/nocodb-sdk - run: pnpm run build:main + ${{ runner.os }}-pnpm-store- + - name: Install dependencies for packages + run: pnpm bootstrap - name: Install dependencies - working-directory: ./packages/nocodb - run: pnpm install - name: run unit tests working-directory: ./packages/nocodb run: pnpm run test:unit @@ -87,19 +79,17 @@ jobs: uses: actions/checkout@v3 with: fetch-depth: 0 - - name: Cache node modules - uses: actions/cache@v3 - env: - cache-name: cache-node-modules - + - name: Get pnpm store directory + shell: bash + run: | + echo "STORE_PATH=$(pnpm store path --silent)" >> $GITHUB_ENV + - uses: actions/cache@v3 + name: Setup pnpm cache with: - # pnpm cache files are stored in `~/.pnpm` on Linux/macOS - path: ~/.pnpm - key: ${{ runner.os }}-build-${{ env.cache-name }}-${{ hashFiles('**/package-lock.json') }} + path: ${{ env.STORE_PATH }} + key: ${{ runner.os }}-pnpm-store-${{ hashFiles('**/pnpm-lock.yaml') }} restore-keys: | - ${{ runner.os }}-build-${{ env.cache-name }}- - ${{ runner.os }}-build- - ${{ runner.os }}- + ${{ runner.os }}-pnpm-store- - name: Set CI env run: export CI=true - name: Set NC Edition @@ -107,15 +97,8 @@ jobs: - name: setup pg working-directory: ./ run: docker-compose -f ./tests/playwright/scripts/docker-compose-playwright-pg.yml up -d & - - name: install dependencies nocodb-sdk - working-directory: ./packages/nocodb-sdk - run: pnpm install - - name: build nocodb-sdk - working-directory: ./packages/nocodb-sdk - run: pnpm run build:main - - name: Install dependencies - working-directory: ./packages/nocodb - run: pnpm install + - name: install dependencies + run: pnpm bootstrap - name: run unit tests working-directory: ./packages/nocodb run: pnpm run test:unit:pg diff --git a/.github/workflows/playwright-test-workflow.yml b/.github/workflows/playwright-test-workflow.yml index 1d267d8b51..2a5391623e 100644 --- a/.github/workflows/playwright-test-workflow.yml +++ b/.github/workflows/playwright-test-workflow.yml @@ -57,12 +57,8 @@ jobs: run: export CI=true - name: Set NC Edition run: export EE=true - - name: install dependencies nocodb-sdk - working-directory: ./packages/nocodb-sdk - run: pnpm install - - name: Build nocodb-sdk - working-directory: ./packages/nocodb-sdk - run: pnpm run build + - name: install dependencies + run: pnpm bootstrap - name: Setup mysql if: ${{ inputs.db == 'mysql' }} working-directory: ./packages/nocodb/tests/mysql-sakila-db @@ -90,24 +86,20 @@ jobs: if: ${{ inputs.db == 'sqlite' }} working-directory: ./packages/nocodb run: | - pnpm install pnpm run watch:run:playwright &> ${{ inputs.db }}_${{ inputs.shard }}_test_backend.log & - name: Run backend:mysql if: ${{ inputs.db == 'mysql' }} working-directory: ./packages/nocodb run: | - pnpm install pnpm run watch:run:playwright:mysql &> ${{ inputs.db }}_${{ inputs.shard }}_test_backend.log & - name: Run backend:pg if: ${{ inputs.db == 'pg' }} working-directory: ./packages/nocodb run: | - pnpm install pnpm run watch:run:playwright:pg &> ${{ inputs.db }}_${{ inputs.shard }}_test_backend.log & - name: Install dependencies if: steps.playwright-cache.outputs.cache-hit != 'true' working-directory: ./tests/playwright - run: pnpm install - name: Install Playwright Browsers working-directory: ./tests/playwright run: pnpm exec playwright install --with-deps chromium diff --git a/.github/workflows/release-executables.yml b/.github/workflows/release-executables.yml index 02e26036ee..253fb8e3fc 100644 --- a/.github/workflows/release-executables.yml +++ b/.github/workflows/release-executables.yml @@ -22,19 +22,17 @@ jobs: runs-on: ubuntu-latest steps: - uses: actions/checkout@v3 - - name: Cache node modules - id: cache-npm - uses: actions/cache@v3 - env: - cache-name: cache-node-modules + - name: Get pnpm store directory + shell: bash + run: | + echo "STORE_PATH=$(pnpm store path --silent)" >> $GITHUB_ENV + - uses: actions/cache@v3 + name: Setup pnpm cache with: - # npm cache files are stored in `~/.npm` on Linux/macOS - path: ~/.npm - key: ${{ runner.os }}-build-${{ env.cache-name }}-${{ hashFiles('**/package-lock.json') }} + path: ${{ env.STORE_PATH }} + key: ${{ runner.os }}-pnpm-store-${{ hashFiles('**/pnpm-lock.yaml') }} restore-keys: | - ${{ runner.os }}-build-${{ env.cache-name }}- - ${{ runner.os }}-build- - ${{ runner.os }}- + ${{ runner.os }}-pnpm-store- - name: Cache pkg modules id: cache-pkg diff --git a/.github/workflows/release-timely-executables.yml b/.github/workflows/release-timely-executables.yml index 0654f10218..93c1b43515 100644 --- a/.github/workflows/release-timely-executables.yml +++ b/.github/workflows/release-timely-executables.yml @@ -29,19 +29,17 @@ jobs: with: token: ${{ secrets.NC_GITHUB_TOKEN }} repository: 'nocodb/nocodb-timely' - - name: Cache node modules - id: cache-pnpm - uses: actions/cache@v3 - env: - cache-name: cache-node-modules + - name: Get pnpm store directory + shell: bash + run: | + echo "STORE_PATH=$(pnpm store path --silent)" >> $GITHUB_ENV + - uses: actions/cache@v3 + name: Setup pnpm cache with: - # pnpm cache files are stored in `~/.pnpm` on Linux/macOS - path: ~/.pnpm - key: ${{ runner.os }}-build-${{ env.cache-name }}-${{ hashFiles('**/package-lock.json') }} + path: ${{ env.STORE_PATH }} + key: ${{ runner.os }}-pnpm-store-${{ hashFiles('**/pnpm-lock.yaml') }} restore-keys: | - ${{ runner.os }}-build-${{ env.cache-name }}- - ${{ runner.os }}-build- - ${{ runner.os }}- + ${{ runner.os }}-pnpm-store- - name: Cache pkg modules id: cache-pkg uses: actions/cache@v3 @@ -68,7 +66,7 @@ jobs: - uses: actions/setup-node@v3 with: - node-version: 16 + node-version: 18 - name: Update nocodb-timely env: @@ -86,7 +84,7 @@ jobs: - name : Install dependencies and build executables run: | # install pnpm dependendencies - pnpm i + pnpm bootstrap # Copy sqlite binaries # rsync -rvzhP ./binaries/binding/ ./node_modules/sqlite3/lib/binding/ diff --git a/.github/workflows/unit-test.yml b/.github/workflows/unit-test.yml index 2afbf60701..369ad4c629 100644 --- a/.github/workflows/unit-test.yml +++ b/.github/workflows/unit-test.yml @@ -20,7 +20,7 @@ jobs: strategy: matrix: - node-version: [16.x] + node-version: [18.x] # See supported Node.js release schedule at https://nodejs.org/en/about/releases/ steps: @@ -34,15 +34,8 @@ jobs: with: node-version: ${{ matrix.node-version }} cache: 'pnpm' - - name: install dependencies nocodb-sdk - working-directory: ./packages/nocodb-sdk - run: pnpm install --frozen-lockfile - - name: build nocodb-sdk - working-directory: ./packages/nocodb-sdk - run: pnpm run build:main - - name: install dependencies nocodb - working-directory: ./packages/nocodb - run: pnpm install --frozen-lockfile + - name: install dependencies + run: pnpm bootstrap - name: run unit tests working-directory: ./packages/nocodb run: pnpm run unit-test \ No newline at end of file diff --git a/.github/workflows/update-sdk-path.yml b/.github/workflows/update-sdk-path.yml index d8f2b28bc1..4ac8edb0a1 100644 --- a/.github/workflows/update-sdk-path.yml +++ b/.github/workflows/update-sdk-path.yml @@ -23,11 +23,7 @@ jobs: fetch-depth: 0 - run: | - cd packages/nocodb - pnpm install --ignore-scripts nocodb-sdk - cd ../.. - cd packages/nc-gui - pnpm install --ignore-scripts nocodb-sdk + pnpm bootstrap - name: Create Pull Request id: cpr