diff --git a/.github/workflows/backend-tests.yml b/.github/workflows/backend-tests.yml index 4e87bd3e9..e5c5d188e 100644 --- a/.github/workflows/backend-tests.yml +++ b/.github/workflows/backend-tests.yml @@ -138,7 +138,7 @@ jobs: - name: Install Etherpad plugins run: > - bun install --no-save + cd src && bun install --no-save ep_align ep_author_hover ep_cursortrace diff --git a/.github/workflows/docker.yml b/.github/workflows/docker.yml index d9fe8c388..5ec027fb4 100644 --- a/.github/workflows/docker.yml +++ b/.github/workflows/docker.yml @@ -35,14 +35,9 @@ jobs: cache-from: type=gha cache-to: type=gha,mode=max - - name: Set up Node.js - uses: actions/setup-node@v3 + uses: oven-sh/setup-bun@v1 with: - node-version: 'lts/*' - cache: 'npm' - cache-dependency-path: | - src/package-lock.json - src/bin/doc/package-lock.json + bun-version: latest - name: Test run: | @@ -58,7 +53,7 @@ jobs: *) printf %s\\n "unexpected status: ${status}" >&2; exit 1;; esac done - (cd src && npm run test-container) + (cd src && bun 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 8feb87e67..f49a2460e 100644 --- a/.github/workflows/frontend-admin-tests.yml +++ b/.github/workflows/frontend-admin-tests.yml @@ -29,19 +29,15 @@ jobs: name: Checkout repository uses: actions/checkout@v4 - - uses: actions/setup-node@v3 + uses: oven-sh/setup-bun@v1 with: - node-version: ${{ matrix.node }} - cache: 'npm' - cache-dependency-path: | - src/package-lock.json - src/bin/doc/package-lock.json + bun-version: latest - name: Install etherpad plugins # We intentionally install an old ep_align version to test upgrades to # the minor version number. The --legacy-peer-deps flag is required to # work around a bug in npm v7: https://github.com/npm/cli/issues/2199 - run: npm install --no-save --legacy-peer-deps ep_align@0.2.27 + run: bun install ep_align@0.2.27 # 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 diff --git a/.github/workflows/frontend-tests.yml b/.github/workflows/frontend-tests.yml index 69bdca312..ff0351bd0 100644 --- a/.github/workflows/frontend-tests.yml +++ b/.github/workflows/frontend-tests.yml @@ -23,13 +23,9 @@ jobs: name: Checkout repository uses: actions/checkout@v4 - - uses: actions/setup-node@v3 + uses: oven-sh/setup-bun@v1 with: - node-version: 20 - cache: 'npm' - cache-dependency-path: | - src/package-lock.json - src/bin/doc/package-lock.json + bun-version: latest - name: Install all dependencies and symlink for ep_etherpad-lite run: src/bin/installDeps.sh @@ -78,19 +74,15 @@ jobs: name: Checkout repository uses: actions/checkout@v4 - - uses: actions/setup-node@v3 + uses: oven-sh/setup-bun@v1 with: - node-version: 20 - cache: 'npm' - cache-dependency-path: | - src/package-lock.json - src/bin/doc/package-lock.json + bun-version: latest - 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: > - npm install --no-save --legacy-peer-deps + bun install --no-save --legacy-peer-deps ep_align ep_author_hover ep_cursortrace diff --git a/.github/workflows/lint-package-lock.yml b/.github/workflows/lint-package-lock.yml index 4301a992c..c67691364 100644 --- a/.github/workflows/lint-package-lock.yml +++ b/.github/workflows/lint-package-lock.yml @@ -20,16 +20,12 @@ jobs: name: Checkout repository uses: actions/checkout@v4 - - uses: actions/setup-node@v3 + uses: oven-sh/setup-bun@v1 with: - node-version: 20 - cache: 'npm' - cache-dependency-path: | - src/package-lock.json - src/bin/doc/package-lock.json + bun-version: latest - name: Install lockfile-lint - run: npm install --no-save lockfile-lint + run: bun install --no-save lockfile-lint - name: Run lockfile-lint on package-lock.json run: > diff --git a/.github/workflows/load-test.yml b/.github/workflows/load-test.yml index a6a93ddd2..601980bff 100644 --- a/.github/workflows/load-test.yml +++ b/.github/workflows/load-test.yml @@ -20,19 +20,15 @@ jobs: name: Checkout repository uses: actions/checkout@v4 - - uses: actions/setup-node@v3 + uses: oven-sh/setup-bun@v1 with: - node-version: 20 - cache: 'npm' - cache-dependency-path: | - src/package-lock.json - src/bin/doc/package-lock.json + bun-version: latest - name: Install all dependencies and symlink for ep_etherpad-lite run: src/bin/installDeps.sh - name: Install etherpad-load-test - run: sudo npm install -g etherpad-load-test + run: sudo bun install -g etherpad-load-test - name: Run load test run: src/tests/frontend/travis/runnerLoadTest.sh 25 50 @@ -50,22 +46,18 @@ jobs: name: Checkout repository uses: actions/checkout@v4 - - uses: actions/setup-node@v3 + uses: oven-sh/setup-bun@v1 with: - node-version: 20 - cache: 'npm' - cache-dependency-path: | - src/package-lock.json - src/bin/doc/package-lock.json + bun-version: latest - name: Install etherpad-load-test - run: sudo npm install -g etherpad-load-test + run: sudo bun install -g etherpad-load-test - 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: > - npm install --no-save --legacy-peer-deps + bun install --no-save --legacy-peer-deps ep_align ep_author_hover ep_cursortrace @@ -107,19 +99,15 @@ jobs: name: Checkout repository uses: actions/checkout@v4 - - uses: actions/setup-node@v3 + uses: oven-sh/setup-bun@v1 with: - node-version: 20 - cache: 'npm' - cache-dependency-path: | - src/package-lock.json - src/bin/doc/package-lock.json + bun-version: latest - name: Install all dependencies and symlink for ep_etherpad-lite run: src/bin/installDeps.sh - name: Install etherpad-load-test - run: sudo npm install -g etherpad-load-test + run: sudo bun install -g etherpad-load-test - name: Run load test run: src/tests/frontend/travis/runnerLoadTest.sh 5000 5 diff --git a/.github/workflows/rate-limit.yml b/.github/workflows/rate-limit.yml index b11c9be3a..478956de1 100644 --- a/.github/workflows/rate-limit.yml +++ b/.github/workflows/rate-limit.yml @@ -20,13 +20,9 @@ jobs: name: Checkout repository uses: actions/checkout@v4 - - uses: actions/setup-node@v3 + uses: oven-sh/setup-bun@v1 with: - node-version: 20 - cache: 'npm' - cache-dependency-path: | - src/package-lock.json - src/bin/doc/package-lock.json + bun-version: latest - name: docker network run: docker network create --subnet=172.23.42.0/16 ep_net diff --git a/.github/workflows/upgrade-from-latest-release.yml b/.github/workflows/upgrade-from-latest-release.yml index 1433f601a..bf84c1272 100644 --- a/.github/workflows/upgrade-from-latest-release.yml +++ b/.github/workflows/upgrade-from-latest-release.yml @@ -18,7 +18,7 @@ jobs: strategy: fail-fast: false matrix: - node: [16, 18, 20] + node: [1.0.3, canary] steps: - name: Check out latest release @@ -26,19 +26,15 @@ jobs: with: ref: master - - uses: actions/setup-node@v3 + uses: oven-sh/setup-bun@v1 with: - node-version: ${{ matrix.node }} - cache: 'npm' - cache-dependency-path: | - src/package-lock.json - src/bin/doc/package-lock.json + bun-version: ${{ 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: > - npm install --no-save --legacy-peer-deps + bun install ep_align ep_author_hover ep_cursortrace @@ -66,7 +62,7 @@ jobs: run: src/bin/installDeps.sh - name: Run the backend tests - run: cd src && npm test + run: cd src && bun run test # Because actions/checkout@v4 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 @@ -87,10 +83,10 @@ jobs: run: src/bin/installDeps.sh - name: Run the backend tests - run: cd src && npm test + run: cd src && bun run test - name: Install Cypress - run: cd src && npm install cypress + run: cd src && bun install cypress - name: Run Etherpad & Test Frontend run: | diff --git a/.github/workflows/windows.yml b/.github/workflows/windows.yml index 1657b7cd9..e2082a3c2 100644 --- a/.github/workflows/windows.yml +++ b/.github/workflows/windows.yml @@ -26,13 +26,9 @@ jobs: name: Checkout repository uses: actions/checkout@v4 - - uses: actions/setup-node@v3 + uses: oven-sh/setup-bun@v1 with: - node-version: 20 - cache: 'npm' - cache-dependency-path: | - src/package-lock.json - src/bin/doc/package-lock.json + bun-version: latest - name: Install all dependencies and symlink for ep_etherpad-lite shell: msys2 {0} @@ -40,7 +36,7 @@ jobs: - name: Run the backend tests shell: msys2 {0} - run: cd src && npm test + run: cd src && bun run test - name: Build the .zip shell: msys2 {0} @@ -106,16 +102,12 @@ jobs: name: Extract Etherpad run: 7z x etherpad-win.zip -oetherpad - - uses: actions/setup-node@v3 + uses: oven-sh/setup-bun@v1 with: - node-version: 20 - cache: 'npm' - cache-dependency-path: | - etherpad/src/package-lock.json - etherpad/src/bin/doc/package-lock.json + bun-version: latest - name: Install Cypress - run: cd etherpad && cd src && npm install cypress + run: cd etherpad && cd src && bun install cypress - name: Run Etherpad run: | diff --git a/Dockerfile b/Dockerfile index 6c45683f0..c28d94c93 100644 --- a/Dockerfile +++ b/Dockerfile @@ -4,7 +4,7 @@ # # Author: muxator -FROM node:lts-alpine +FROM oven/bun:latest LABEL maintainer="Etherpad team, https://github.com/ether/etherpad-lite" ARG TIMEZONE= @@ -99,7 +99,7 @@ COPY --chown=etherpad:etherpad ./ ./ # seems to confuse tools such as `npm outdated`, `npm update`, and some ESLint # rules. RUN { [ -z "${ETHERPAD_PLUGINS}" ] || \ - npm install --no-save --legacy-peer-deps ${ETHERPAD_PLUGINS}; } && \ + bun install ${ETHERPAD_PLUGINS}; } && \ src/bin/installDeps.sh && \ rm -rf ~/.npm @@ -110,7 +110,7 @@ COPY --chown=etherpad:etherpad ${SETTINGS} "${EP_DIR}"/settings.json RUN chmod -R g=u . USER root -RUN cd src && npm link +RUN cd src && bun link USER etherpad HEALTHCHECK --interval=20s --timeout=3s CMD ["etherpad-healthcheck"]