diff --git a/.dockerignore b/.dockerignore index e059141762e..4a14bb0edfd 100644 --- a/.dockerignore +++ b/.dockerignore @@ -24,6 +24,8 @@ Dockerfile settings.json src/node_modules +bin/node_modules +doc/node_modules admin/node_modules ui/node_modules node_modules diff --git a/.github/workflows/backend-tests.yml b/.github/workflows/backend-tests.yml index 3bf7569acd3..fa47950e499 100644 --- a/.github/workflows/backend-tests.yml +++ b/.github/workflows/backend-tests.yml @@ -40,14 +40,14 @@ jobs: ${{ env.PNPM_HOME }} ~/.local/share/gnpm /usr/local/bin/gnpm - /usr/local/bin/gnpm-0.0.12 + /usr/local/bin/gnpm-0.1.0 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 + version: 0.1.0 - name: Install libreoffice uses: awalsh128/cache-apt-pkgs-action@v1.5.3 @@ -96,14 +96,14 @@ jobs: ${{ env.PNPM_HOME }} ~/.local/share/gnpm /usr/local/bin/gnpm - /usr/local/bin/gnpm-0.0.12 + /usr/local/bin/gnpm-0.1.0 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 + version: 0.1.0 - name: Install libreoffice uses: awalsh128/cache-apt-pkgs-action@v1.5.3 @@ -171,7 +171,7 @@ jobs: - name: Setup gnpm uses: SamTV12345/gnpm-setup@main with: - version: 0.0.12 + version: 0.1.0 - name: Install all dependencies and symlink for ep_etherpad-lite run: gnpm install --frozen-lockfile --runtimeVersion="${{ matrix.node }}" @@ -224,7 +224,7 @@ jobs: - name: Setup gnpm uses: SamTV12345/gnpm-setup@main with: - version: 0.0.12 + version: 0.1.0 - name: Install dependencies run: gnpm install --runtimeVersion="${{ matrix.node }}" - name: Build admin ui diff --git a/.github/workflows/build-and-deploy-docs.yml b/.github/workflows/build-and-deploy-docs.yml index 8ff8435ae8c..1981c39dea8 100644 --- a/.github/workflows/build-and-deploy-docs.yml +++ b/.github/workflows/build-and-deploy-docs.yml @@ -41,14 +41,14 @@ jobs: ${{ env.STORE_PATH }} ~/.local/share/gnpm /usr/local/bin/gnpm - /usr/local/bin/gnpm-0.0.12 + /usr/local/bin/gnpm-0.1.0 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 + version: 0.1.0 - name: Setup Pages uses: actions/configure-pages@v5 - name: Install dependencies diff --git a/.github/workflows/docker.yml b/.github/workflows/docker.yml index 743a9aa4295..30e278ec907 100644 --- a/.github/workflows/docker.yml +++ b/.github/workflows/docker.yml @@ -12,6 +12,7 @@ on: - 'v?[0-9]+.[0-9]+.[0-9]+' env: TEST_TAG: etherpad/etherpad:test + LOG_LEVEL: DEBUG permissions: contents: read @@ -52,14 +53,14 @@ jobs: ${{ env.PNPM_HOME }} ~/.local/share/gnpm /usr/local/bin/gnpm - /usr/local/bin/gnpm-0.0.12 + /usr/local/bin/gnpm-0.1.0 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 + version: 0.1.0 - name: Test working-directory: etherpad diff --git a/.github/workflows/frontend-admin-tests.yml b/.github/workflows/frontend-admin-tests.yml index e65c8600c73..93b82959817 100644 --- a/.github/workflows/frontend-admin-tests.yml +++ b/.github/workflows/frontend-admin-tests.yml @@ -39,14 +39,14 @@ jobs: ${{ env.PNPM_HOME }} ~/.local/share/gnpm /usr/local/bin/gnpm - /usr/local/bin/gnpm-0.0.12 + /usr/local/bin/gnpm-0.1.0 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 + version: 0.1.0 - name: Cache playwright binaries uses: actions/cache@v4 id: playwright-cache diff --git a/.github/workflows/frontend-tests.yml b/.github/workflows/frontend-tests.yml index eec808de891..dfabafca45a 100644 --- a/.github/workflows/frontend-tests.yml +++ b/.github/workflows/frontend-tests.yml @@ -34,14 +34,14 @@ jobs: ~/.cache/ms-playwright ~/.local/share/gnpm /usr/local/bin/gnpm - /usr/local/bin/gnpm-0.0.12 + /usr/local/bin/gnpm-0.1.0 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 + version: 0.1.0 - name: Install all dependencies and symlink for ep_etherpad-lite run: gnpm install --frozen-lockfile @@ -97,14 +97,14 @@ jobs: ~/.local/share/gnpm ~/.cache/ms-playwright /usr/local/bin/gnpm - /usr/local/bin/gnpm-0.0.12 + /usr/local/bin/gnpm-0.1.0 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 + version: 0.1.0 - name: Install all dependencies and symlink for ep_etherpad-lite run: gnpm install --frozen-lockfile - name: export GIT_HASH to env @@ -159,13 +159,13 @@ jobs: ~/.local/share/gnpm ~/.cache/ms-playwright /usr/local/bin/gnpm - /usr/local/bin/gnpm-0.0.12 + /usr/local/bin/gnpm-0.1.0 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 + version: 0.1.0 - name: Install all dependencies and symlink for ep_etherpad-lite run: gnpm install --frozen-lockfile diff --git a/.github/workflows/handleRelease.yml b/.github/workflows/handleRelease.yml index bc162819e2b..3dc8e2cb4a5 100644 --- a/.github/workflows/handleRelease.yml +++ b/.github/workflows/handleRelease.yml @@ -37,14 +37,14 @@ jobs: ~/.local/share/gnpm ~/.cache/ms-playwright /usr/local/bin/gnpm - /usr/local/bin/gnpm-0.0.12 + /usr/local/bin/gnpm-0.1.0 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 + version: 0.1.0 - name: Install all dependencies and symlink for ep_etherpad-lite run: gnpm install --frozen-lockfile - name: Build etherpad diff --git a/.github/workflows/load-test.yml b/.github/workflows/load-test.yml index 67101f3e1fd..25198b5a6d2 100644 --- a/.github/workflows/load-test.yml +++ b/.github/workflows/load-test.yml @@ -38,14 +38,14 @@ jobs: ~/.local/share/gnpm ~/.cache/ms-playwright /usr/local/bin/gnpm - /usr/local/bin/gnpm-0.0.12 + /usr/local/bin/gnpm-0.1.0 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 + version: 0.1.0 - name: Install all dependencies and symlink for ep_etherpad-lite run: gnpm install --frozen-lockfile @@ -81,14 +81,14 @@ jobs: ~/.local/share/gnpm ~/.cache/ms-playwright /usr/local/bin/gnpm - /usr/local/bin/gnpm-0.0.12 + /usr/local/bin/gnpm-0.1.0 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 + version: 0.1.0 - name: Install etherpad-load-test run: sudo npm install -g etherpad-load-test-socket-io @@ -149,14 +149,14 @@ jobs: ~/.local/share/gnpm ~/.cache/ms-playwright /usr/local/bin/gnpm - /usr/local/bin/gnpm-0.0.12 + /usr/local/bin/gnpm-0.1.0 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 + version: 0.1.0 - name: Install all dependencies and symlink for ep_etherpad-lite run: gnpm install --frozen-lockfile diff --git a/.github/workflows/perform-type-check.yml b/.github/workflows/perform-type-check.yml index 368e0eda66f..b28907fd269 100644 --- a/.github/workflows/perform-type-check.yml +++ b/.github/workflows/perform-type-check.yml @@ -34,14 +34,14 @@ jobs: ~/.local/share/gnpm ~/.cache/ms-playwright /usr/local/bin/gnpm - /usr/local/bin/gnpm-0.0.12 + /usr/local/bin/gnpm-0.1.0 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 + version: 0.1.0 - name: Install all dependencies and symlink for ep_etherpad-lite run: gnpm install --frozen-lockfile diff --git a/.github/workflows/rate-limit.yml b/.github/workflows/rate-limit.yml index 31f232ec7e0..f70b75cdd3c 100644 --- a/.github/workflows/rate-limit.yml +++ b/.github/workflows/rate-limit.yml @@ -37,14 +37,14 @@ jobs: ~/.local/share/gnpm ~/.cache/ms-playwright /usr/local/bin/gnpm - /usr/local/bin/gnpm-0.0.12 + /usr/local/bin/gnpm-0.1.0 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 + version: 0.1.0 - name: docker network diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 8b011aafc9a..83386ac08f1 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -56,14 +56,14 @@ jobs: ~/.local/share/gnpm ~/.cache/ms-playwright /usr/local/bin/gnpm - /usr/local/bin/gnpm-0.0.12 + /usr/local/bin/gnpm-0.1.0 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 + version: 0.1.0 - name: Install dependencies ether.github.com run: gnpm install --frozen-lockfile working-directory: ether.github.com diff --git a/.github/workflows/releaseEtherpad.yml b/.github/workflows/releaseEtherpad.yml index 88857a28706..c98703d9516 100644 --- a/.github/workflows/releaseEtherpad.yml +++ b/.github/workflows/releaseEtherpad.yml @@ -25,14 +25,14 @@ jobs: ${{ env.STORE_PATH }} ~/.local/share/gnpm /usr/local/bin/gnpm - /usr/local/bin/gnpm-0.0.12 + /usr/local/bin/gnpm-0.1.0 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 + version: 0.1.0 - name: Install dependencies run: gnpm install --frozen-lockfile - name: Rename etherpad diff --git a/.github/workflows/upgrade-from-latest-release.yml b/.github/workflows/upgrade-from-latest-release.yml index 046bd866531..38b82d2e5eb 100644 --- a/.github/workflows/upgrade-from-latest-release.yml +++ b/.github/workflows/upgrade-from-latest-release.yml @@ -43,14 +43,14 @@ jobs: ~/.local/share/gnpm ~/.cache/ms-playwright /usr/local/bin/gnpm - /usr/local/bin/gnpm-0.0.12 + /usr/local/bin/gnpm-0.1.0 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 + version: 0.1.0 - name: Install libreoffice uses: awalsh128/cache-apt-pkgs-action@v1.5.3 with: diff --git a/Dockerfile b/Dockerfile index 1b0a45d1a88..8b60b056242 100644 --- a/Dockerfile +++ b/Dockerfile @@ -5,15 +5,22 @@ # Author: muxator ARG BUILD_ENV=git -FROM node:lts-alpine AS adminbuild -RUN npm install -g pnpm@latest -WORKDIR /opt/etherpad-lite +FROM alpine:3.22.2 AS adminbuild +RUN apk add --no-cache wget tar +RUN wget https://github.com/SamTV12345/gnpm/releases/download/v0.1.0/gnpm_0.1.0_linux_amd64.tar.gz +RUN tar -xvzf gnpm_0.1.0_linux_amd64.tar.gz +RUN mv gnpm /usr/local/bin/ +ARG EP_DIR=/opt/etherpad-lite +WORKDIR ${EP_DIR} COPY . . -RUN pnpm install -RUN pnpm run build:ui +RUN gnpm install +RUN gnpm run build:ui + +FROM alpine:3.22.2 AS build +RUN apk add --no-cache wget tar +RUN wget https://github.com/SamTV12345/gnpm/releases/download/v0.1.0/gnpm_0.1.0_linux_amd64.tar.gz && tar -xvzf gnpm_0.1.0_linux_amd64.tar.gz && mv gnpm /usr/local/bin -FROM node:lts-alpine AS build LABEL maintainer="Etherpad team, https://github.com/ether/etherpad-lite" # Set these arguments when building the image from behind a proxy @@ -100,8 +107,6 @@ RUN mkdir -p "${EP_DIR}" && chown etherpad:etherpad "${EP_DIR}" # https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=863199 RUN \ mkdir -p /usr/share/man/man1 && \ - npm install pnpm@latest -g && \ - apk update && apk upgrade && \ apk add --no-cache \ ca-certificates \ curl \ @@ -125,9 +130,10 @@ COPY --chown=etherpad:etherpad ./pnpm-workspace.yaml ./package.json ./ FROM build AS build_git ONBUILD COPY --chown=etherpad:etherpad ./.git/HEA[D] ./.git/HEAD ONBUILD COPY --chown=etherpad:etherpad ./.git/ref[s] ./.git/refs +COPY --from="adminbuild" /root/.local/share ~/.local/share FROM build AS build_copy - +COPY --from="adminbuild" /root/.local/share ~/.local/share @@ -163,18 +169,19 @@ ENV NODE_ENV=production ENV ETHERPAD_PRODUCTION=true COPY --chown=etherpad:etherpad ./src ./src +COPY --chown=etherpad:etherpad --from=adminbuild /opt/etherpad-lite/src/ templates/admin./src/templates/admin COPY --chown=etherpad:etherpad --from=adminbuild /opt/etherpad-lite/src/templates/admin ./src/templates/admin COPY --chown=etherpad:etherpad --from=adminbuild /opt/etherpad-lite/src/static/oidc ./src/static/oidc COPY --chown=etherpad:etherpad ./local_plugin[s] ./local_plugins/ -RUN bash -c ./bin/installLocalPlugins.sh +RUN eval "$(gnpm --gnpmEnv)" && bash -c ./bin/installLocalPlugins.sh -RUN bin/installDeps.sh && \ +RUN gnpm install && \ if [ ! -z "${ETHERPAD_PLUGINS}" ] || [ ! -z "${ETHERPAD_GITHUB_PLUGINS}" ]; then \ - pnpm run plugins i ${ETHERPAD_PLUGINS} ${ETHERPAD_GITHUB_PLUGINS:+--github ${ETHERPAD_GITHUB_PLUGINS}}; \ + gnpm run plugins i ${ETHERPAD_PLUGINS} ${ETHERPAD_GITHUB_PLUGINS:+--github ${ETHERPAD_GITHUB_PLUGINS}}; \ fi && \ - pnpm store prune + gnpm store prune # Copy the configuration file. COPY --chown=etherpad:etherpad ${SETTINGS} "${EP_DIR}"/settings.json @@ -189,4 +196,4 @@ HEALTHCHECK --interval=5s --timeout=3s \ CMD curl --silent http://localhost:9001/health | grep -E "pass|ok|up" > /dev/null || exit 1 EXPOSE 9001 -CMD ["pnpm", "run", "prod"] +CMD ["gnpm", "run", "prod"] diff --git a/package.json b/package.json index 5f070f488de..40b548dd14a 100644 --- a/package.json +++ b/package.json @@ -42,7 +42,7 @@ "ui": "workspace:./ui" }, "engines": { - "node": ">=20.0.0" + "node": ">=20.0.0 <25.0.0" }, "repository": { "type": "git",