From d5a23d53470e9998fe96373d2f8f8240fab35677 Mon Sep 17 00:00:00 2001 From: SamTV12345 <40429738+SamTV12345@users.noreply.github.com> Date: Sun, 5 Oct 2025 22:56:14 +0200 Subject: [PATCH] chore: use gnpm (#7156) * chore: use gnpm * chore: fixed pnpm * chore: fixed gnpm * chore: fixed jq * chore: use 0.0.7 * chore: use flag for building * chore: fixed all backend tests * chore: continue with porting things * chore: fixed path * chore: fixed backend tests * chore: upgraded all to gnpm * chore: updated to gnpm 0.0.9 * chore: echo current env with debug logs * chore: install with frozen lockfile * chore: use 0.0.10 * chore: use 0.0.11 * chore: use 0.0.12 globally * chore: reworked handleRelease workflow to be up to date and depend on other workflows --- .github/workflows/backend-tests.yml | 194 ++++++++---------- .github/workflows/build-and-deploy-docs.yml | 38 ++-- .github/workflows/docker.yml | 37 ++-- .github/workflows/frontend-admin-tests.yml | 48 ++--- .github/workflows/frontend-tests.yml | 148 +++++-------- .github/workflows/handleRelease.yml | 64 ++++++ .github/workflows/load-test.yml | 129 ++++++------ .github/workflows/perform-type-check.yml | 38 ++-- .github/workflows/rate-limit.yml | 36 ++-- .github/workflows/release.yml | 36 ++-- ...eEtherpad.yaml.yml => releaseEtherpad.yml} | 31 +-- .../workflows/upgrade-from-latest-release.yml | 57 +++-- .github/workflows/windows.yml | 86 -------- package.json | 6 +- 14 files changed, 431 insertions(+), 517 deletions(-) create mode 100644 .github/workflows/handleRelease.yml rename .github/workflows/{releaseEtherpad.yaml.yml => releaseEtherpad.yml} (60%) delete mode 100644 .github/workflows/windows.yml diff --git a/.github/workflows/backend-tests.yml b/.github/workflows/backend-tests.yml index 82a21fcf5..3bf7569ac 100644 --- a/.github/workflows/backend-tests.yml +++ b/.github/workflows/backend-tests.yml @@ -12,8 +12,11 @@ on: permissions: contents: read + jobs: withoutpluginsLinux: + env: + PNPM_HOME: ~/.pnpm-store # run on pushes to any branch # run on PRs from external forks if: | @@ -24,33 +27,27 @@ jobs: strategy: fail-fast: false matrix: - node: [20, 22, 24] + node: [">=20.0.0 <21.0.0", ">=22.0.0 <23.0.0", ">=24.0.0 <25.0.0"] steps: - name: Checkout repository uses: actions/checkout@v5 - - - uses: actions/setup-node@v5 - with: - node-version: ${{ matrix.node }} - - uses: pnpm/action-setup@v4 - name: Install pnpm - with: - version: 10 - run_install: false - - name: Get pnpm store directory - shell: bash - run: | - echo "STORE_PATH=$(pnpm store path --silent)" >> $GITHUB_ENV - uses: actions/cache@v4 - name: Setup pnpm cache + name: Setup gnpm cache + if: always() with: - path: ${{ env.STORE_PATH }} - key: ${{ runner.os }}-pnpm-store-${{ hashFiles('**/pnpm-lock.yaml') }} + path: | + ${{ env.PNPM_HOME }} + ~/.local/share/gnpm + /usr/local/bin/gnpm + /usr/local/bin/gnpm-0.0.12 + key: ${{ runner.os }}-gnpm-store-${{ hashFiles('**/pnpm-lock.yaml') }} restore-keys: | - ${{ runner.os }}-pnpm-store- - - name: Only install direct dependencies - run: pnpm config set auto-install-peers false + ${{ runner.os }}-gnpm-store- + - name: Setup gnpm + uses: SamTV12345/gnpm-setup@main + with: + version: 0.0.12 - name: Install libreoffice uses: awalsh128/cache-apt-pkgs-action@v1.5.3 @@ -59,21 +56,23 @@ jobs: version: 1.0 - name: Install all dependencies and symlink for ep_etherpad-lite - run: bin/installDeps.sh + run: gnpm i --frozen-lockfile --runtimeVersion="${{ matrix.node }}" - name: Install admin ui working-directory: admin - run: pnpm install + run: gnpm install --runtimeVersion="${{ matrix.node }}" - name: Build admin ui working-directory: admin - run: pnpm build + run: gnpm build --runtimeVersion="${{ matrix.node }}" - name: Run the backend tests - run: pnpm test + run: gnpm test --runtimeVersion="${{ matrix.node }}" - name: Run the new vitest tests working-directory: src - run: pnpm run test:vitest + run: gnpm run test:vitest --runtimeVersion="${{ matrix.node }}" withpluginsLinux: + env: + PNPM_HOME: ~/.pnpm-store # run on pushes to any branch # run on PRs from external forks if: | @@ -84,33 +83,27 @@ jobs: strategy: fail-fast: false matrix: - node: [20, 22, 24] + node: [">=20.0.0 <21.0.0", ">=22.0.0 <23.0.0", ">=24.0.0 <25.0.0"] steps: - name: Checkout repository uses: actions/checkout@v5 - - - uses: actions/setup-node@v5 - with: - node-version: ${{ matrix.node }} - - uses: pnpm/action-setup@v4 - name: Install pnpm - with: - version: 10 - run_install: false - - name: Get pnpm store directory - shell: bash - run: | - echo "STORE_PATH=$(pnpm store path --silent)" >> $GITHUB_ENV - uses: actions/cache@v4 name: Setup pnpm cache + if: always() with: - path: ${{ env.STORE_PATH }} - key: ${{ runner.os }}-pnpm-store-${{ hashFiles('**/pnpm-lock.yaml') }} + path: | + ${{ env.PNPM_HOME }} + ~/.local/share/gnpm + /usr/local/bin/gnpm + /usr/local/bin/gnpm-0.0.12 + key: ${{ runner.os }}-gnpm-store-${{ hashFiles('**/pnpm-lock.yaml') }} restore-keys: | - ${{ runner.os }}-pnpm-store- - - name: Only install direct dependencies - run: pnpm config set auto-install-peers false + ${{ runner.os }}-gnpm-store- + - name: Setup gnpm + uses: SamTV12345/gnpm-setup@main + with: + version: 0.0.12 - name: Install libreoffice uses: awalsh128/cache-apt-pkgs-action@v1.5.3 @@ -119,17 +112,14 @@ jobs: version: 1.0 - name: Install all dependencies and symlink for ep_etherpad-lite - run: bin/installDeps.sh - - name: Install admin ui - working-directory: admin - run: pnpm install + run: gnpm install --frozen-lockfile --runtimeVersion="${{ matrix.node }}" - name: Build admin ui working-directory: admin - run: pnpm build + run: gnpm build --runtimeVersion="${{ matrix.node }}" - name: Install Etherpad plugins run: > - pnpm install --workspace-root + gnpm install --workspace-root ep_align ep_author_hover ep_cursortrace @@ -141,57 +131,53 @@ jobs: ep_set_title_on_pad ep_spellcheck ep_subscript_and_superscript - ep_table_of_contents + ep_table_of_contents --runtimeVersion="${{ matrix.node }}" - name: Run the backend tests - run: pnpm test + run: gnpm test --runtimeVersion="${{ matrix.node }}" - name: Run the new vitest tests working-directory: src - run: pnpm run test:vitest + run: gnpm run test:vitest --runtimeVersion="${{ matrix.node }}" withoutpluginsWindows: + env: + PNPM_HOME: ~\\.pnpm-store # run on pushes to any branch # run on PRs from external forks if: | (github.event_name != 'pull_request') || (github.event.pull_request.head.repo.id != github.event.pull_request.base.repo.id) + strategy: + fail-fast: false + matrix: + node: [">=20.0.0 <21.0.0", ">=22.0.0 <23.0.0", ">=24.0.0 <25.0.0"] name: Windows without plugins runs-on: windows-latest steps: - name: Checkout repository uses: actions/checkout@v5 - - - uses: actions/setup-node@v5 - with: - node-version: 20 - - uses: pnpm/action-setup@v4 - name: Install pnpm - with: - version: 10 - run_install: false - - name: Get pnpm store directory - shell: bash - run: | - echo "STORE_PATH=$(pnpm store path --silent)" >> $GITHUB_ENV - uses: actions/cache@v4 name: Setup pnpm cache + if: always() with: - path: ${{ env.STORE_PATH }} - key: ${{ runner.os }}-pnpm-store-${{ hashFiles('**/pnpm-lock.yaml') }} + path: | + ${{ env.PNPM_HOME }} + C:\gnpm\ + C:\Users\runneradmin\AppData\Roaming\gnpm\ + key: ${{ runner.os }}-gnpm-store-${{ hashFiles('**/pnpm-lock.yaml') }} restore-keys: | - ${{ runner.os }}-pnpm-store- - - name: Only install direct dependencies - run: pnpm config set auto-install-peers false + ${{ runner.os }}-gnpm-store- + - name: Setup gnpm + uses: SamTV12345/gnpm-setup@main + with: + version: 0.0.12 - name: Install all dependencies and symlink for ep_etherpad-lite - run: bin/installOnWindows.bat - - name: Install admin ui - working-directory: admin - run: pnpm install + run: gnpm install --frozen-lockfile --runtimeVersion="${{ matrix.node }}" - name: Build admin ui working-directory: admin - run: pnpm build + run: gnpm build --runtimeVersion="${{ matrix.node }}" - name: Fix up the settings.json run: | @@ -200,17 +186,23 @@ jobs: - name: Run the backend tests working-directory: src - run: pnpm test + run: gnpm test --runtimeVersion="${{ matrix.node }}" - name: Run the new vitest tests working-directory: src - run: pnpm run test:vitest + run: gnpm run test:vitest --runtimeVersion="${{ matrix.node }}" withpluginsWindows: + env: + PNPM_HOME: ~\\.pnpm-store # run on pushes to any branch # run on PRs from external forks if: | (github.event_name != 'pull_request') || (github.event.pull_request.head.repo.id != github.event.pull_request.base.repo.id) + strategy: + fail-fast: false + matrix: + node: [">=20.0.0 <21.0.0", ">=22.0.0 <23.0.0", ">=24.0.0 <25.0.0"] name: Windows with Plugins runs-on: windows-latest @@ -218,40 +210,32 @@ jobs: - name: Checkout repository uses: actions/checkout@v5 - - - uses: actions/setup-node@v5 - with: - node-version: 22 - - uses: pnpm/action-setup@v4 - name: Install pnpm - with: - version: 10 - run_install: false - - name: Get pnpm store directory - shell: bash - run: | - echo "STORE_PATH=$(pnpm store path --silent)" >> $GITHUB_ENV - uses: actions/cache@v4 name: Setup pnpm cache + if: always() with: - path: ${{ env.STORE_PATH }} - key: ${{ runner.os }}-pnpm-store-${{ hashFiles('**/pnpm-lock.yaml') }} + path: | + ${{ env.PNPM_HOME }} + C:\gnpm\ + C:\Users\runneradmin\AppData\Roaming\gnpm\ + key: ${{ runner.os }}-gnpm-store-${{ hashFiles('**/pnpm-lock.yaml') }} restore-keys: | - ${{ runner.os }}-pnpm-store- - - name: Only install direct dependencies - run: pnpm config set auto-install-peers false - - name: Install admin ui - working-directory: admin - run: pnpm install + ${{ runner.os }}-gnpm-store- + - name: Setup gnpm + uses: SamTV12345/gnpm-setup@main + with: + version: 0.0.12 + - name: Install dependencies + run: gnpm install --runtimeVersion="${{ matrix.node }}" - name: Build admin ui working-directory: admin - run: pnpm build + run: gnpm build --runtimeVersion="${{ matrix.node }}" - name: Install Etherpad plugins # The --legacy-peer-deps flag is required to work around a bug in npm # v7: https://github.com/npm/cli/issues/2199 run: > - pnpm install --workspace-root + gnpm install --workspace-root ep_align ep_author_hover ep_cursortrace @@ -263,7 +247,7 @@ jobs: ep_set_title_on_pad ep_spellcheck ep_subscript_and_superscript - ep_table_of_contents + ep_table_of_contents --runtimeVersion="${{ matrix.node }}" # Etherpad core dependencies must be installed after installing the # plugin's dependencies, otherwise npm will try to hoist common # dependencies by removing them from src/node_modules and installing them @@ -275,7 +259,7 @@ jobs: # rules. - name: Install all dependencies and symlink for ep_etherpad-lite - run: bin/installOnWindows.bat + run: gnpm install --frozen-lockfile --runtimeVersion="${{ matrix.node }}" - name: Fix up the settings.json run: | @@ -284,7 +268,7 @@ jobs: - name: Run the backend tests working-directory: src - run: pnpm test + run: gnpm test --runtimeVersion="${{ matrix.node }}" - name: Run the new vitest tests working-directory: src - run: pnpm run test:vitest + run: gnpm run test:vitest --runtimeVersion="${{ matrix.node }}" diff --git a/.github/workflows/build-and-deploy-docs.yml b/.github/workflows/build-and-deploy-docs.yml index f3850a6c1..8ff8435ae 100644 --- a/.github/workflows/build-and-deploy-docs.yml +++ b/.github/workflows/build-and-deploy-docs.yml @@ -33,31 +33,29 @@ jobs: steps: - name: Checkout uses: actions/checkout@v5 + - uses: actions/cache@v4 + name: Setup gnpm cache + if: always() + with: + path: | + ${{ env.STORE_PATH }} + ~/.local/share/gnpm + /usr/local/bin/gnpm + /usr/local/bin/gnpm-0.0.12 + key: ${{ runner.os }}-gnpm-store-${{ hashFiles('**/pnpm-lock.yaml') }} + restore-keys: | + ${{ runner.os }}-gnpm-store- + - name: Setup gnpm + uses: SamTV12345/gnpm-setup@main + with: + version: 0.0.12 - name: Setup Pages uses: actions/configure-pages@v5 - - uses: pnpm/action-setup@v4 - name: Install pnpm - with: - version: 10 - run_install: false - - name: Get pnpm store directory - shell: bash - run: | - echo "STORE_PATH=$(pnpm store path --silent)" >> $GITHUB_ENV - - uses: actions/cache@v4 - name: Setup pnpm cache - with: - path: ${{ env.STORE_PATH }} - key: ${{ runner.os }}-pnpm-store-${{ hashFiles('**/pnpm-lock.yaml') }} - restore-keys: | - ${{ runner.os }}-pnpm-store- - - name: Only install direct dependencies - run: pnpm config set auto-install-peers false - name: Install dependencies - run: pnpm install + run: gnpm install - name: Build app working-directory: doc - run: pnpm run docs:build + run: gnpm run docs:build env: COMMIT_REF: ${{ github.sha }} - name: Upload artifact diff --git a/.github/workflows/docker.yml b/.github/workflows/docker.yml index 32dae60d4..743a9aa42 100644 --- a/.github/workflows/docker.yml +++ b/.github/workflows/docker.yml @@ -1,4 +1,4 @@ -name: Docker +name: "Docker" on: pull_request: paths-ignore: @@ -18,6 +18,8 @@ permissions: jobs: docker: runs-on: ubuntu-latest + env: + PNPM_HOME: ~/.pnpm-store steps: - name: Check out @@ -42,27 +44,22 @@ jobs: tags: ${{ env.TEST_TAG }} cache-from: type=gha cache-to: type=gha,mode=max - - - name: Set up Node.js - uses: actions/setup-node@v5 - with: - node-version: 'lts/*' - - uses: pnpm/action-setup@v4 - name: Install pnpm - with: - version: 10 - run_install: false - - name: Get pnpm store directory - shell: bash - run: | - echo "STORE_PATH=$(pnpm store path --silent)" >> $GITHUB_ENV - uses: actions/cache@v4 - name: Setup pnpm cache + name: Setup gnpm cache + if: always() with: - path: ${{ env.STORE_PATH }} - key: ${{ runner.os }}-pnpm-store-${{ hashFiles('**/pnpm-lock.yaml') }} + path: | + ${{ env.PNPM_HOME }} + ~/.local/share/gnpm + /usr/local/bin/gnpm + /usr/local/bin/gnpm-0.0.12 + key: ${{ runner.os }}-gnpm-store-${{ hashFiles('**/pnpm-lock.yaml') }} restore-keys: | - ${{ runner.os }}-pnpm-store- + ${{ runner.os }}-gnpm-store- + - name: Setup gnpm + uses: SamTV12345/gnpm-setup@main + with: + version: 0.0.12 - name: Test working-directory: etherpad @@ -79,7 +76,7 @@ jobs: *) printf %s\\n "unexpected status: ${status}" >&2; exit 1;; esac done - (cd src && pnpm run test-container) + (cd src && gnpm run test-container) git clean -dxf . - name: Docker meta diff --git a/.github/workflows/frontend-admin-tests.yml b/.github/workflows/frontend-admin-tests.yml index d42d2921b..e65c8600c 100644 --- a/.github/workflows/frontend-admin-tests.yml +++ b/.github/workflows/frontend-admin-tests.yml @@ -1,5 +1,5 @@ # Leave the powered by Sauce Labs bit in as this means we get additional concurrency -name: "Frontend admin tests powered by Sauce Labs" +name: "Frontend admin tests" on: push: @@ -11,6 +11,8 @@ permissions: jobs: withplugins: + env: + PNPM_HOME: ~/.pnpm-store name: with plugins runs-on: ubuntu-latest @@ -29,26 +31,22 @@ jobs: - name: Checkout repository uses: actions/checkout@v5 - - - uses: actions/setup-node@v5 - with: - node-version: ${{ matrix.node }} - - uses: pnpm/action-setup@v4 - name: Install pnpm - with: - version: 10 - run_install: false - - name: Get pnpm store directory - shell: bash - run: | - echo "STORE_PATH=$(pnpm store path --silent)" >> $GITHUB_ENV - uses: actions/cache@v4 - name: Setup pnpm cache + name: Setup gnpm cache + if: always() with: - path: ${{ env.STORE_PATH }} - key: ${{ runner.os }}-pnpm-store-${{ hashFiles('**/pnpm-lock.yaml') }} + path: | + ${{ env.PNPM_HOME }} + ~/.local/share/gnpm + /usr/local/bin/gnpm + /usr/local/bin/gnpm-0.0.12 + key: ${{ runner.os }}-gnpm-store-${{ hashFiles('**/pnpm-lock.yaml') }} restore-keys: | - ${{ runner.os }}-pnpm-store- + ${{ runner.os }}-gnpm-store- + - name: Setup gnpm + uses: SamTV12345/gnpm-setup@main + with: + version: 0.0.12 - name: Cache playwright binaries uses: actions/cache@v4 id: playwright-cache @@ -56,8 +54,6 @@ jobs: path: | ~/.cache/ms-playwright key: ${{ runner.os }}-playwright-${{ env.PLAYWRIGHT_VERSION }} - - name: Only install direct dependencies - run: pnpm config set auto-install-peers false #- # name: Install etherpad plugins # # We intentionally install an old ep_align version to test upgrades to @@ -75,7 +71,7 @@ jobs: # rules. - name: Install all dependencies and symlink for ep_etherpad-lite - run: pnpm i + run: gnpm i --runtimeVersion="${{ matrix.node }}" #- # name: Install etherpad plugins # run: rm -Rf node_modules/ep_align/static/tests/* @@ -99,7 +95,7 @@ jobs: - name: Build admin frontend working-directory: admin run: | - pnpm run build + gnpm run build --runtimeVersion="${{ matrix.node }}" # name: Run the frontend admin tests # shell: bash # env: @@ -130,7 +126,7 @@ jobs: - name: Run the frontend admin tests shell: bash run: | - pnpm run prod & + gnpm run prod --runtimeVersion="${{ matrix.node }}" & connected=false can_connect() { curl -sSfo /dev/null http://localhost:9001/ || return 1 @@ -142,9 +138,9 @@ jobs: sleep 1 done cd src - pnpm exec playwright install - pnpm exec playwright install-deps - pnpm run test-admin + gnpm exec playwright install --runtimeVersion="${{ matrix.node }}" + gnpm exec playwright install-deps --runtimeVersion="${{ matrix.node }}" + gnpm run test-admin --runtimeVersion="${{ matrix.node }}" - uses: actions/upload-artifact@v4 if: always() with: diff --git a/.github/workflows/frontend-tests.yml b/.github/workflows/frontend-tests.yml index 5d10e39c8..eec808de8 100644 --- a/.github/workflows/frontend-tests.yml +++ b/.github/workflows/frontend-tests.yml @@ -11,6 +11,8 @@ permissions: jobs: playwright-chrome: + env: + PNPM_HOME: ~/.pnpm-store name: Playwright Chrome runs-on: ubuntu-latest steps: @@ -23,32 +25,26 @@ jobs: - name: Checkout repository uses: actions/checkout@v5 - - - uses: actions/setup-node@v5 - with: - node-version: 22 - - uses: pnpm/action-setup@v4 - name: Install pnpm - with: - version: 10 - run_install: false - - name: Get pnpm store directory - shell: bash - run: | - echo "STORE_PATH=$(pnpm store path --silent)" >> $GITHUB_ENV - uses: actions/cache@v4 - name: Setup pnpm cache + name: Setup gnpm cache if: always() with: - path: ${{ env.STORE_PATH }} - key: ${{ runner.os }}-pnpm-store-${{ hashFiles('**/pnpm-lock.yaml') }} + path: | + ${{ env.PNPM_HOME }} + ~/.cache/ms-playwright + ~/.local/share/gnpm + /usr/local/bin/gnpm + /usr/local/bin/gnpm-0.0.12 + key: ${{ runner.os }}-gnpm-store-${{ hashFiles('**/pnpm-lock.yaml') }} restore-keys: | - ${{ runner.os }}-pnpm-store- - - name: Only install direct dependencies - run: pnpm config set auto-install-peers false + ${{ runner.os }}-gnpm-store- + - name: Setup gnpm + uses: SamTV12345/gnpm-setup@main + with: + version: 0.0.12 - name: Install all dependencies and symlink for ep_etherpad-lite - run: bin/installDeps.sh + run: gnpm install --frozen-lockfile - name: export GIT_HASH to env id: environment @@ -56,17 +52,10 @@ jobs: - name: Create settings.json run: cp ./src/tests/settings.json settings.json - - name: Cache playwright binaries - uses: actions/cache@v4 - id: playwright-cache - with: - path: | - ~/.cache/ms-playwright - key: ${{ runner.os }}-playwright-${{ env.PLAYWRIGHT_VERSION }} - name: Run the frontend tests shell: bash run: | - pnpm run prod & + gnpm run prod & connected=false can_connect() { curl -sSfo /dev/null http://localhost:9001/ || return 1 @@ -78,8 +67,8 @@ jobs: sleep 1 done cd src - pnpm exec playwright install chromium --with-deps - pnpm run test-ui --project=chromium + gnpm exec playwright install chromium --with-deps + gnpm run test-ui --project=chromium - uses: actions/upload-artifact@v4 if: always() with: @@ -87,6 +76,8 @@ jobs: path: src/playwright-report/ retention-days: 30 playwright-firefox: + env: + PNPM_HOME: ~/.pnpm-store name: Playwright Firefox runs-on: ubuntu-latest steps: @@ -97,46 +88,34 @@ jobs: printf %s\\n '::set-output name=tunnel_id::${{ github.run_id }}-${{ github.run_number }}-${{ github.job }}' - name: Checkout repository uses: actions/checkout@v5 - - uses: actions/setup-node@v5 - with: - node-version: 22 - - uses: pnpm/action-setup@v4 - name: Install pnpm - with: - version: 10 - run_install: false - - name: Get pnpm store directory - shell: bash - run: | - echo "STORE_PATH=$(pnpm store path --silent)" >> $GITHUB_ENV - uses: actions/cache@v4 - name: Setup pnpm cache + name: Setup gnpm cache if: always() with: - path: ${{ env.STORE_PATH }} - key: ${{ runner.os }}-pnpm-store-${{ hashFiles('**/pnpm-lock.yaml') }} + path: | + ${{ env.PNPM_HOME }} + ~/.local/share/gnpm + ~/.cache/ms-playwright + /usr/local/bin/gnpm + /usr/local/bin/gnpm-0.0.12 + key: ${{ runner.os }}-gnpm-store-${{ hashFiles('**/pnpm-lock.yaml') }} restore-keys: | - ${{ runner.os }}-pnpm-store- - - name: Only install direct dependencies - run: pnpm config set auto-install-peers false + ${{ runner.os }}-gnpm-store- + - name: Setup gnpm + uses: SamTV12345/gnpm-setup@main + with: + version: 0.0.12 - name: Install all dependencies and symlink for ep_etherpad-lite - run: bin/installDeps.sh + run: gnpm install --frozen-lockfile - name: export GIT_HASH to env id: environment run: echo "::set-output name=sha_short::$(git rev-parse --short ${{ github.sha }})" - name: Create settings.json run: cp ./src/tests/settings.json settings.json - - name: Cache playwright binaries - uses: actions/cache@v4 - id: playwright-cache - with: - path: | - ~/.cache/ms-playwright - key: ${{ runner.os }}-playwright-${{ env.PLAYWRIGHT_VERSION }} - name: Run the frontend tests shell: bash run: | - pnpm run prod & + gnpm run prod & connected=false can_connect() { curl -sSfo /dev/null http://localhost:9001/ || return 1 @@ -148,8 +127,8 @@ jobs: sleep 1 done cd src - pnpm exec playwright install firefox --with-deps - pnpm run test-ui --project=firefox + gnpm exec playwright install firefox --with-deps + gnpm run test-ui --project=firefox - uses: actions/upload-artifact@v4 if: always() with: @@ -159,7 +138,8 @@ jobs: playwright-webkit: name: Playwright Webkit runs-on: ubuntu-latest - + env: + PNPM_HOME: ~/.pnpm-store steps: - name: Generate Sauce Labs strings @@ -170,39 +150,25 @@ jobs: - name: Checkout repository uses: actions/checkout@v5 - - - uses: actions/setup-node@v5 - with: - node-version: 22 - - name: Cache playwright binaries - uses: actions/cache@v4 - id: playwright-cache - with: - path: | - ~/.cache/ms-playwright - key: ${{ runner.os }}-playwright-${{ env.PLAYWRIGHT_VERSION }} - - uses: pnpm/action-setup@v4 - name: Install pnpm - with: - version: 10 - run_install: false - - name: Get pnpm store directory - shell: bash - run: | - echo "STORE_PATH=$(pnpm store path --silent)" >> $GITHUB_ENV - uses: actions/cache@v4 - name: Setup pnpm cache + name: Setup gnpm cache if: always() with: - path: ${{ env.STORE_PATH }} - key: ${{ runner.os }}-pnpm-store-${{ hashFiles('**/pnpm-lock.yaml') }} - restore-keys: | - ${{ runner.os }}-pnpm-store- - - name: Only install direct dependencies - run: pnpm config set auto-install-peers false + path: | + ${{ env.PNPM_HOME }} + ~/.local/share/gnpm + ~/.cache/ms-playwright + /usr/local/bin/gnpm + /usr/local/bin/gnpm-0.0.12 + key: ${{ runner.os }}-gnpm-store-${{ hashFiles('**/pnpm-lock.yaml') }} + restore-keys: ${{ runner.os }}-gnpm-store- + - name: Setup gnpm + uses: SamTV12345/gnpm-setup@main + with: + version: 0.0.12 - name: Install all dependencies and symlink for ep_etherpad-lite - run: bin/installDeps.sh + run: gnpm install --frozen-lockfile - name: export GIT_HASH to env id: environment @@ -213,7 +179,7 @@ jobs: - name: Run the frontend tests shell: bash run: | - pnpm run prod & + gnpm run prod & connected=false can_connect() { curl -sSfo /dev/null http://localhost:9001/ || return 1 @@ -225,8 +191,8 @@ jobs: sleep 1 done cd src - pnpm exec playwright install webkit --with-deps - pnpm run test-ui --project=webkit || true + gnpm exec playwright install webkit --with-deps + gnpm run test-ui --project=webkit || true - uses: actions/upload-artifact@v4 if: always() with: diff --git a/.github/workflows/handleRelease.yml b/.github/workflows/handleRelease.yml new file mode 100644 index 000000000..c6e096e05 --- /dev/null +++ b/.github/workflows/handleRelease.yml @@ -0,0 +1,64 @@ +name: "Handle release" + +# any branch is useful for testing before a PR is submitted +on: + workflow_run: + workflows: + - "Backend tests" + - "Perform type checks" + - "rate limit" + - "Docker" + - "Frontend admin tests" + +permissions: + contents: read + +env: + PNPM_HOME: ~/.pnpm-store + +jobs: + build-zip: + permissions: write-all + # run on pushes to any branch + # run on PRs from external forks + if: | + (github.event_name != 'pull_request') + || (github.event.pull_request.head.repo.id != github.event.pull_request.base.repo.id) + name: Handle the release + runs-on: ubuntu-latest + steps: + - + name: Checkout repository + uses: actions/checkout@v5 + - uses: actions/cache@v4 + name: Setup gnpm cache + if: always() + with: + path: | + ${{ env.STORE_PATH }} + ~/.local/share/gnpm + ~/.cache/ms-playwright + /usr/local/bin/gnpm + /usr/local/bin/gnpm-0.0.12 + key: ${{ runner.os }}-gnpm-store-${{ hashFiles('**/pnpm-lock.yaml') }} + restore-keys: | + ${{ runner.os }}-gnpm-store- + - name: Setup gnpm + uses: SamTV12345/gnpm-setup@main + with: + version: 0.0.12 + - name: Install all dependencies and symlink for ep_etherpad-lite + run: gnpm install --frozen-lockfile + - name: Build etherpad + run: gnpm run build:etherpad + # On release, create release + - name: Generate Changelog + if: ${{startsWith(github.ref, 'refs/tags/v') }} + working-directory: bin + run: gnpm run generateChangelog ${{ github.ref }} > ${{ github.workspace }}-CHANGELOG.txt + - name: Release + uses: softprops/action-gh-release@v2 + if: ${{startsWith(github.ref, 'refs/tags/v') }} + with: + body_path: ${{ github.workspace }}-CHANGELOG.txt + make_latest: true diff --git a/.github/workflows/load-test.yml b/.github/workflows/load-test.yml index eeaebab27..67101f3e1 100644 --- a/.github/workflows/load-test.yml +++ b/.github/workflows/load-test.yml @@ -12,6 +12,10 @@ on: permissions: contents: read +env: + PNPM_HOME: ~/.pnpm-store + LOG_LEVEL: DEBUG + jobs: withoutplugins: # run on pushes to any branch @@ -25,37 +29,36 @@ jobs: - name: Checkout repository uses: actions/checkout@v5 - - - uses: actions/setup-node@v5 - with: - node-version: 20 - - uses: pnpm/action-setup@v4 - name: Install pnpm - with: - version: 10 - run_install: false - - name: Get pnpm store directory - shell: bash - run: | - echo "STORE_PATH=$(pnpm store path --silent)" >> $GITHUB_ENV - uses: actions/cache@v4 - name: Setup pnpm cache + name: Setup gnpm cache + if: always() with: - path: ${{ env.STORE_PATH }} - key: ${{ runner.os }}-pnpm-store-${{ hashFiles('**/pnpm-lock.yaml') }} + path: | + ${{ env.STORE_PATH }} + ~/.local/share/gnpm + ~/.cache/ms-playwright + /usr/local/bin/gnpm + /usr/local/bin/gnpm-0.0.12 + key: ${{ runner.os }}-gnpm-store-${{ hashFiles('**/pnpm-lock.yaml') }} restore-keys: | - ${{ runner.os }}-pnpm-store- - - name: Only install direct dependencies - run: pnpm config set auto-install-peers false + ${{ runner.os }}-gnpm-store- + - name: Setup gnpm + uses: SamTV12345/gnpm-setup@main + with: + version: 0.0.12 - name: Install all dependencies and symlink for ep_etherpad-lite - run: bin/installDeps.sh + run: gnpm install --frozen-lockfile - name: Install etherpad-load-test run: sudo npm install -g etherpad-load-test-socket-io - name: Run load test - run: src/tests/frontend/travis/runnerLoadTest.sh 25 50 + run: | + gnpm --gnpmEnv + eval "$(gnpm --gnpmEnv)" + echo $PATH + src/tests/frontend/travis/runnerLoadTest.sh 25 50 withplugins: # run on pushes to any branch @@ -69,37 +72,32 @@ jobs: - name: Checkout repository uses: actions/checkout@v5 - - - uses: actions/setup-node@v5 - with: - node-version: 20 - - uses: pnpm/action-setup@v4 - name: Install pnpm - with: - version: 10 - run_install: false - - name: Get pnpm store directory - shell: bash - run: | - echo "STORE_PATH=$(pnpm store path --silent)" >> $GITHUB_ENV - uses: actions/cache@v4 - name: Setup pnpm cache + name: Setup gnpm cache + if: always() with: - path: ${{ env.STORE_PATH }} - key: ${{ runner.os }}-pnpm-store-${{ hashFiles('**/pnpm-lock.yaml') }} + path: | + ${{ env.STORE_PATH }} + ~/.local/share/gnpm + ~/.cache/ms-playwright + /usr/local/bin/gnpm + /usr/local/bin/gnpm-0.0.12 + key: ${{ runner.os }}-gnpm-store-${{ hashFiles('**/pnpm-lock.yaml') }} restore-keys: | - ${{ runner.os }}-pnpm-store- - - name: Only install direct dependencies - run: pnpm config set auto-install-peers false + ${{ runner.os }}-gnpm-store- + - name: Setup gnpm + uses: SamTV12345/gnpm-setup@main + with: + version: 0.0.12 - name: Install etherpad-load-test - run: pnpm install -g etherpad-load-test-socket-io + run: sudo npm install -g etherpad-load-test-socket-io - name: Install etherpad plugins # The --legacy-peer-deps flag is required to work around a bug in npm v7: # https://github.com/npm/cli/issues/2199 run: > - pnpm install --workspace-root + gnpm install --workspace-root ep_align ep_author_hover ep_cursortrace @@ -123,10 +121,12 @@ jobs: # rules. - name: Install all dependencies and symlink for ep_etherpad-lite - run: bin/installDeps.sh + run: gnpm install --frozen-lockfile - name: Run load test - run: src/tests/frontend/travis/runnerLoadTest.sh 25 50 + run: | + eval "$(gnpm --gnpmEnv)" + src/tests/frontend/travis/runnerLoadTest.sh 25 50 long: # run on pushes to any branch @@ -140,34 +140,33 @@ jobs: - name: Checkout repository uses: actions/checkout@v5 - - - uses: actions/setup-node@v5 - with: - node-version: 20 - - uses: pnpm/action-setup@v4 - name: Install pnpm - with: - version: 10 - run_install: false - - name: Get pnpm store directory - shell: bash - run: | - echo "STORE_PATH=$(pnpm store path --silent)" >> $GITHUB_ENV - uses: actions/cache@v4 - name: Setup pnpm cache + name: Setup gnpm cache + if: always() with: - path: ${{ env.STORE_PATH }} - key: ${{ runner.os }}-pnpm-store-${{ hashFiles('**/pnpm-lock.yaml') }} + path: | + ${{ env.STORE_PATH }} + ~/.local/share/gnpm + ~/.cache/ms-playwright + /usr/local/bin/gnpm + /usr/local/bin/gnpm-0.0.12 + key: ${{ runner.os }}-gnpm-store-${{ hashFiles('**/pnpm-lock.yaml') }} restore-keys: | - ${{ runner.os }}-pnpm-store- - - name: Only install direct dependencies - run: pnpm config set auto-install-peers false + ${{ runner.os }}-gnpm-store- + - name: Setup gnpm + uses: SamTV12345/gnpm-setup@main + with: + version: 0.0.12 - name: Install all dependencies and symlink for ep_etherpad-lite - run: bin/installDeps.sh + run: gnpm install --frozen-lockfile - name: Install etherpad-load-test run: sudo npm install -g etherpad-load-test-socket-io - name: Run load test - run: src/tests/frontend/travis/runnerLoadTest.sh 5000 5 + run: | + gnpm --gnpmEnv + eval "$(gnpm --gnpmEnv)" + echo $PATH + src/tests/frontend/travis/runnerLoadTest.sh 5000 5 diff --git a/.github/workflows/perform-type-check.yml b/.github/workflows/perform-type-check.yml index b22d427d5..368e0eda6 100644 --- a/.github/workflows/perform-type-check.yml +++ b/.github/workflows/perform-type-check.yml @@ -12,6 +12,8 @@ on: permissions: contents: read +env: + PNPM_HOME: ~/.pnpm-store jobs: performTypeCheck: @@ -23,30 +25,26 @@ jobs: steps: - name: Checkout repository uses: actions/checkout@v5 - - uses: actions/setup-node@v5 - with: - node-version: 20 - - uses: pnpm/action-setup@v4 - name: Install pnpm - with: - version: 10 - run_install: false - - name: Get pnpm store directory - shell: bash - run: | - echo "STORE_PATH=$(pnpm store path --silent)" >> $GITHUB_ENV - uses: actions/cache@v4 - name: Setup pnpm cache + name: Setup gnpm cache + if: always() with: - path: ${{ env.STORE_PATH }} - key: ${{ runner.os }}-pnpm-store-${{ hashFiles('**/pnpm-lock.yaml') }} + path: | + ${{ env.STORE_PATH }} + ~/.local/share/gnpm + ~/.cache/ms-playwright + /usr/local/bin/gnpm + /usr/local/bin/gnpm-0.0.12 + key: ${{ runner.os }}-gnpm-store-${{ hashFiles('**/pnpm-lock.yaml') }} restore-keys: | - ${{ runner.os }}-pnpm-store- - - name: Only install direct dependencies - run: pnpm config set auto-install-peers false + ${{ runner.os }}-gnpm-store- + - name: Setup gnpm + uses: SamTV12345/gnpm-setup@main + with: + version: 0.0.12 - name: Install all dependencies and symlink for ep_etherpad-lite - run: ./bin/installDeps.sh + run: gnpm install --frozen-lockfile - name: Perform type check working-directory: ./src - run: npm run ts-check + run: gnpm run ts-check diff --git a/.github/workflows/rate-limit.yml b/.github/workflows/rate-limit.yml index e7e9ec9f8..31f232ec7 100644 --- a/.github/workflows/rate-limit.yml +++ b/.github/workflows/rate-limit.yml @@ -12,6 +12,9 @@ on: permissions: contents: read +env: + PNPM_HOME: ~/.pnpm-store + jobs: ratelimit: # run on pushes to any branch @@ -25,26 +28,23 @@ jobs: - name: Checkout repository uses: actions/checkout@v5 - - - uses: actions/setup-node@v5 - with: - node-version: 20 - - uses: pnpm/action-setup@v4 - name: Install pnpm - with: - version: 10 - run_install: false - - name: Get pnpm store directory - shell: bash - run: | - echo "STORE_PATH=$(pnpm store path --silent)" >> $GITHUB_ENV - uses: actions/cache@v4 - name: Setup pnpm cache + name: Setup gnpm cache + if: always() with: - path: ${{ env.STORE_PATH }} - key: ${{ runner.os }}-pnpm-store-${{ hashFiles('**/pnpm-lock.yaml') }} + path: | + ${{ env.STORE_PATH }} + ~/.local/share/gnpm + ~/.cache/ms-playwright + /usr/local/bin/gnpm + /usr/local/bin/gnpm-0.0.12 + key: ${{ runner.os }}-gnpm-store-${{ hashFiles('**/pnpm-lock.yaml') }} restore-keys: | - ${{ runner.os }}-pnpm-store- + ${{ runner.os }}-gnpm-store- + - name: Setup gnpm + uses: SamTV12345/gnpm-setup@main + with: + version: 0.0.12 - name: docker network @@ -63,7 +63,7 @@ jobs: docker run --rm --network ep_net --ip 172.23.42.3 --name anotherip -dt anotherip - name: install dependencies and create symlink for ep_etherpad-lite - run: bin/installDeps.sh + run: gnpm install --frozen-lockfile - name: run rate limit test run: | diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 9a4d18fe3..7751680da 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -14,6 +14,9 @@ on: - minor - major +env: + PNPM_HOME: ~/.pnpm-store + jobs: releases: runs-on: ubuntu-latest @@ -44,24 +47,25 @@ jobs: repository: ether/ether.github.com path: ether.github.com token: '${{ secrets.ETHER_RELEASE_TOKEN }}' - - name: Setup Node.js - uses: actions/setup-node@v5 + - uses: actions/cache@v4 + name: Setup gnpm cache + if: always() with: - node-version: '20' - - uses: pnpm/action-setup@v4 - name: Install pnpm + path: | + ${{ env.STORE_PATH }} + ~/.local/share/gnpm + ~/.cache/ms-playwright + /usr/local/bin/gnpm + /usr/local/bin/gnpm-0.0.12 + key: ${{ runner.os }}-gnpm-store-${{ hashFiles('**/pnpm-lock.yaml') }} + restore-keys: | + ${{ runner.os }}-gnpm-store- + - name: Setup gnpm + uses: SamTV12345/gnpm-setup@main with: - version: 10 - run_install: false - - name: Get pnpm store directory - shell: bash - run: | - echo "STORE_PATH=$(pnpm store path --silent)" >> $GITHUB_ENV - - name: Install dependencies etherpad - run: pnpm install --frozen-lockfile - working-directory: etherpad + version: 0.0.12 - name: Install dependencies ether.github.com - run: pnpm install --frozen-lockfile + run: gnpm install --frozen-lockfile working-directory: ether.github.com - name: Set git user run: | @@ -78,7 +82,7 @@ jobs: working-directory: etherpad run: | cd bin - pnpm run release ${{ inputs.release_type }} + gnpm run release ${{ inputs.release_type }} - name: Push after release working-directory: etherpad run: | diff --git a/.github/workflows/releaseEtherpad.yaml.yml b/.github/workflows/releaseEtherpad.yml similarity index 60% rename from .github/workflows/releaseEtherpad.yaml.yml rename to .github/workflows/releaseEtherpad.yml index 51efd2142..88857a287 100644 --- a/.github/workflows/releaseEtherpad.yaml.yml +++ b/.github/workflows/releaseEtherpad.yml @@ -4,20 +4,15 @@ permissions: on: workflow_dispatch: +env: + PNPM_HOME: ~/.pnpm-store + jobs: release: runs-on: ubuntu-latest steps: - name: Checkout repository uses: actions/checkout@v5 - - uses: actions/setup-node@v5 - with: - node-version: 22 - - uses: pnpm/action-setup@v4 - name: Install pnpm - with: - version: 10 - run_install: false - name: Get pnpm store directory shell: bash run: | @@ -26,19 +21,25 @@ jobs: name: Setup pnpm cache if: always() with: - path: ${{ env.STORE_PATH }} - key: ${{ runner.os }}-pnpm-store-${{ hashFiles('**/pnpm-lock.yaml') }} + path: | + ${{ env.STORE_PATH }} + ~/.local/share/gnpm + /usr/local/bin/gnpm + /usr/local/bin/gnpm-0.0.12 + key: ${{ runner.os }}-gnpm-store-${{ hashFiles('**/pnpm-lock.yaml') }} restore-keys: | - ${{ runner.os }}-pnpm-store- - - name: Only install direct dependencies - run: pnpm config set auto-install-peers false + ${{ runner.os }}-gnpm-store- + - name: Setup gnpm + uses: SamTV12345/gnpm-setup@main + with: + version: 0.0.12 - name: Install dependencies - run: pnpm install --frozen-lockfile + run: gnpm install --frozen-lockfile - name: Rename etherpad working-directory: ./src run: sed -i 's/ep_etherpad-lite/ep_etherpad/g' package.json - name: Release to npm - run: pnpm publish --no-git-checks + run: gnpm publish --no-git-checks working-directory: ./src env: NODE_AUTH_TOKEN: ${{ secrets.NPM_PRIVATE_TOKEN }} diff --git a/.github/workflows/upgrade-from-latest-release.yml b/.github/workflows/upgrade-from-latest-release.yml index a8747d450..046bd8665 100644 --- a/.github/workflows/upgrade-from-latest-release.yml +++ b/.github/workflows/upgrade-from-latest-release.yml @@ -12,6 +12,9 @@ on: permissions: contents: read +env: + PNPM_HOME: ~/.pnpm-store + jobs: withpluginsLinux: # run on pushes to any branch @@ -31,35 +34,28 @@ jobs: uses: actions/checkout@v5 with: ref: develop #FIXME change to master when doing release - - - uses: actions/setup-node@v5 + - uses: actions/cache@v4 + name: Setup gnpm cache + if: always() with: - node-version: ${{ matrix.node }} - - uses: pnpm/action-setup@v4 - name: Install pnpm + path: | + ${{ env.STORE_PATH }} + ~/.local/share/gnpm + ~/.cache/ms-playwright + /usr/local/bin/gnpm + /usr/local/bin/gnpm-0.0.12 + key: ${{ runner.os }}-gnpm-store-${{ hashFiles('**/pnpm-lock.yaml') }} + restore-keys: | + ${{ runner.os }}-gnpm-store- + - name: Setup gnpm + uses: SamTV12345/gnpm-setup@main with: - version: 10 - run_install: false - - name: Only install direct dependencies - run: pnpm config set auto-install-peers false + version: 0.0.12 - name: Install libreoffice uses: awalsh128/cache-apt-pkgs-action@v1.5.3 with: packages: libreoffice libreoffice-pdfimport version: 1.0 - - name: Get pnpm store directory - shell: bash - run: | - echo "STORE_PATH=$(pnpm store path --silent)" >> $GITHUB_ENV - - uses: actions/cache@v4 - name: Setup pnpm cache - with: - path: ${{ env.STORE_PATH }} - key: ${{ runner.os }}-pnpm-store-${{ hashFiles('**/pnpm-lock.yaml') }} - restore-keys: | - ${{ runner.os }}-pnpm-store- - - name: Only install direct dependencies - run: pnpm config set auto-install-peers false - name: Install libreoffice uses: awalsh128/cache-apt-pkgs-action@v1.5.3 @@ -68,17 +64,14 @@ jobs: version: 1.0 - name: Install all dependencies and symlink for ep_etherpad-lite - run: bin/installDeps.sh - - name: Install admin ui - working-directory: admin - run: pnpm install + run: gnpm install --frozen-lockfile --runtimeVersion="${{ matrix.node }}" - name: Build admin ui working-directory: admin - run: pnpm build + run: gnpm build --runtimeVersion="${{ matrix.node }}" - name: Install Etherpad plugins run: > - pnpm run install-plugins + gnpm run install-plugins ep_align ep_author_hover ep_cursortrace @@ -90,13 +83,13 @@ jobs: ep_set_title_on_pad ep_spellcheck ep_subscript_and_superscript - ep_table_of_contents + ep_table_of_contents --runtimeVersion="${{ matrix.node }}" - name: Run the backend tests - run: pnpm run test + run: gnpm run test --runtimeVersion="${{ matrix.node }}" - name: Install all dependencies and symlink for ep_etherpad-lite - run: ./bin/installDeps.sh + run: gnpm install --frozen-lockfile --runtimeVersion="${{ matrix.node }}" # Because actions/checkout@v5 is called with "ref: master" and without # "fetch-depth: 0", the local clone does not have the ${GITHUB_SHA} # commit. Fetch ${GITHUB_REF} to get the ${GITHUB_SHA} commit. Note that a @@ -113,4 +106,4 @@ jobs: # commit that merges the PR's source branch to its destination branch. run: git checkout "${GITHUB_SHA}" - name: Run the backend tests - run: pnpm run test + run: gnpm run test --runtimeVersion="${{ matrix.node }}" diff --git a/.github/workflows/windows.yml b/.github/workflows/windows.yml deleted file mode 100644 index a82983068..000000000 --- a/.github/workflows/windows.yml +++ /dev/null @@ -1,86 +0,0 @@ -name: "Windows Build" - -# any branch is useful for testing before a PR is submitted -on: - push: - paths-ignore: - - "doc/**" - pull_request: - paths-ignore: - - "doc/**" - -permissions: - contents: read - -jobs: - build-zip: - permissions: write-all - # run on pushes to any branch - # run on PRs from external forks - if: | - (github.event_name != 'pull_request') - || (github.event.pull_request.head.repo.id != github.event.pull_request.base.repo.id) - name: Build .zip - runs-on: windows-latest - steps: - - - uses: msys2/setup-msys2@v2 - with: - path-type: inherit - install: >- - zip - - - name: Checkout repository - uses: actions/checkout@v5 - - - uses: actions/setup-node@v5 - with: - node-version: 22 - - uses: pnpm/action-setup@v4 - name: Install pnpm - with: - version: 10 - run_install: false - - name: Get pnpm store directory - shell: bash - run: | - echo "STORE_PATH=$(pnpm store path --silent)" >> $GITHUB_ENV - - uses: actions/cache@v4 - name: Setup pnpm cache - with: - path: ${{ env.STORE_PATH }} - key: ${{ runner.os }}-pnpm-store-${{ hashFiles('**/pnpm-lock.yaml') }} - restore-keys: | - ${{ runner.os }}-pnpm-store- - - name: Only install direct dependencies - run: pnpm config set auto-install-peers false - - - name: Install all dependencies and symlink for ep_etherpad-lite - shell: msys2 {0} - run: bin/installDeps.sh - - - name: Run the backend tests - shell: msys2 {0} - working-directory: src - run: pnpm test - - - name: Run Etherpad - working-directory: src - run: | - pnpm i - pnpm exec playwright install --with-deps - pnpm run prod & - curl --connect-timeout 10 --max-time 20 --retry 5 --retry-delay 10 --retry-max-time 60 --retry-connrefused http://127.0.0.1:9001/p/test - pnpm exec playwright install chromium --with-deps - pnpm run test-ui --project=chromium - # On release, create release - - name: Generate Changelog - if: ${{startsWith(github.ref, 'refs/tags/v') }} - working-directory: bin - run: pnpm run generateChangelog ${{ github.ref }} > ${{ github.workspace }}-CHANGELOG.txt - - name: Release - uses: softprops/action-gh-release@v2 - if: ${{startsWith(github.ref, 'refs/tags/v') }} - with: - body_path: ${{ github.workspace }}-CHANGELOG.txt - make_latest: true diff --git a/package.json b/package.json index bb3acfb0b..07172cbdd 100644 --- a/package.json +++ b/package.json @@ -42,14 +42,14 @@ "ui": "workspace:./ui" }, "engines": { - "node": ">=18.18.2", - "npm": ">=6.14.0", - "pnpm": ">=8.3.0" + "node": ">=20.0.0" }, "repository": { "type": "git", "url": "https://github.com/ether/etherpad-lite.git" }, + "packageManager": "pnpm@10.18.0", + "engineStrict": true, "version": "2.5.0", "license": "Apache-2.0" }