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
This commit is contained in:
SamTV12345 2025-10-05 22:56:14 +02:00 committed by GitHub
parent 4dc9c76cc9
commit d5a23d5347
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
14 changed files with 431 additions and 517 deletions

View file

@ -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 }}"

View file

@ -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

View file

@ -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

View file

@ -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:

View file

@ -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:

64
.github/workflows/handleRelease.yml vendored Normal file
View file

@ -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

View file

@ -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

View file

@ -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

View file

@ -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: |

View file

@ -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: |

View file

@ -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 }}

View file

@ -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 }}"

View file

@ -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

View file

@ -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"
}