[monorepo] Try to get make install working in copilot (#32800)

* [monorepo] move building of nginx proxy into Makefile

* [v1] add fake-secrets.env

* [github] add copilot-setup-steps.yml workflow

* [make] debug permissions

* [monorepo] use the host uid/gid for monorepo service

* [web] populate DOCKER_USER for test_frontend_ct

* [github] run npm install outside docker in Copilot sandbox

* [monorepo] add comment for building nginx-proxy image locally

* [monorepo] change uid/gid of node user in cypress image

* [monorepo] low-level rewrite of passwd and groups to match host user

GitOrigin-RevId: d74a5801f0318bab7e7f460374255426706002a3
This commit is contained in:
Jakob Ackermann
2026-04-17 11:03:28 +02:00
committed by Copybot
parent e301030c09
commit 78adc2ae18
9 changed files with 57 additions and 13 deletions

View File

@@ -0,0 +1,12 @@
FROM cypress/included:13.13.2
ARG USER_UID=1000
ARG USER_GID=1000
WORKDIR /overleaf
RUN sed -i s/node:x:1000:/node:x:${USER_GID}:/ /etc/group \
&& sed -i s_node:x:1000:1000::/home/node:/bin/bash_node:x:${USER_UID}:${USER_GID}::/home/node:/bin/bash_ /etc/passwd \
&& chown -R node:node /home/node \
&& chown node:node /overleaf
USER node

View File

@@ -13,7 +13,8 @@ export IMAGE_TAG_CE ?= sharelatex/sharelatex:main
export IMAGE_TAG_PRO ?= us-east1-docker.pkg.dev/overleaf-ops/ol-docker/pro:main
export CYPRESS_SHARD ?=
export COMPOSE_PROJECT_NAME ?= test
export DOCKER_USER := $(shell id -u):$(shell id -g)
export USER_UID=$(shell id -u)
export USER_GID=$(shell id -g)
IMAGE_TAG_PRO_BASE := $(shell echo $(IMAGE_TAG_PRO) | sed -E s/:.+//)
test-e2e-native:
@@ -106,4 +107,8 @@ build_mailtrap:
git clone https://github.com/dbck/docker-mailtrap.git || true && cd docker-mailtrap && git checkout v1.5.0
docker build -t mailtrap docker-mailtrap/build
prefetch_default_compose_build: build_cypress
build_cypress:
docker compose build e2e
.PHONY: test-e2e test-e2e-open

View File

@@ -25,7 +25,11 @@ services:
# For testing "native" on Linux
cypress:
image: cypress/included:13.13.2
build:
context: ../../dockerfiles/cypress
args:
- USER_UID
- USER_GID
volumes:
- ../../:/overleaf
- /tmp/.X11-unix:/tmp/.X11-unix
@@ -33,7 +37,6 @@ services:
working_dir: /overleaf/server-ce/test
entrypoint: npm
command: run cypress:open
user: "${DOCKER_USER:-1000:1000}"
environment:
CI:
VERBOSE_LOGGING:

View File

@@ -66,7 +66,11 @@ services:
command: ["/server-pro-start.sh"]
e2e:
image: cypress/included:13.13.2
build:
context: ../../dockerfiles/cypress
args:
- USER_UID
- USER_GID
stop_grace_period: 0s
entrypoint: npm
command: run cypress:run
@@ -76,7 +80,6 @@ services:
- $PWD:$PWD
- $MONOREPO/libraries:$MONOREPO/libraries:ro
- $MONOREPO/node_modules:$MONOREPO/node_modules:ro
user: "${DOCKER_USER:-1000:1000}"
environment:
MONOREPO:
CYPRESS_SHARD:

View File

@@ -181,6 +181,17 @@ TEST_FRONTEND_CT_VARIANTS = \
test_frontend_ct_editor_other \
test_frontend_ct_editor_visual \
TEST_FRONTEND_CT_TARGETS = \
$(TEST_FRONTEND_CT_VARIANTS) \
build_test_frontend_ct \
test_frontend_ct_ui \
$(TEST_FRONTEND_CT_TARGETS): export USER_UID=$(shell id -u)
$(TEST_FRONTEND_CT_TARGETS): export USER_GID=$(shell id -g)
test_frontend_ct_ui:
docker compose -f docker-compose.cypress.yml run --rm cypress run cypress:open-ct -- --browser chrome
#
# Writefull tests
#
@@ -192,6 +203,7 @@ test_writefull:
# Note: The below cypress targets are for CI only
build_test_frontend_ct:
$(DOCKER_COMPOSE) build test_frontend_ct
docker run --rm --volume /dev/shm:/dev/shm --user root $(IMAGE_CI) bash -ec 'for path in /overleaf/services/web/cypress/results /overleaf/services/web/node_modules/.cache; do mkdir -p $$path; chown -R node:node $$path; done && tar -cC / overleaf | tar -xC /dev/shm'
test_frontend_ct_core_other: export CYPRESS_DOWNLOADS=./cypress/downloads/core

View File

@@ -87,11 +87,14 @@ services:
JUNIT_ROOT_SUITE_NAME:
test_frontend_ct:
image: cypress/included:13.13.2
build:
context: ../../dockerfiles/cypress
args:
- USER_UID
- USER_GID
logging:
driver: local
working_dir: /overleaf/services/web
user: "${DOCKER_USER:-1000:1000}"
environment:
CI:
CYPRESS_DOWNLOADS:

View File

@@ -1,6 +1,10 @@
services:
cypress:
image: cypress/included:13.13.2
build:
context: ../../dockerfiles/cypress
args:
- USER_UID
- USER_GID
volumes:
- ../../:/overleaf
- /tmp/.X11-unix:/tmp/.X11-unix
@@ -8,7 +12,6 @@ services:
working_dir: /overleaf/services/web
entrypoint: npm
command: run cypress:open-ct
user: "${DOCKER_USER:-1000:1000}"
environment:
VERBOSE_LOGGING:
DISPLAY: ${DISPLAY:-:0}

View File

@@ -89,11 +89,14 @@ services:
user: node
test_frontend_ct:
image: cypress/included:13.13.2
build:
context: ../../dockerfiles/cypress
args:
- USER_UID
- USER_GID
volumes:
- ../../:/overleaf
working_dir: /overleaf/services/web
user: "${DOCKER_USER:-1000:1000}"
environment:
VERBOSE_LOGGING:
CI:

View File

@@ -37,8 +37,8 @@
"convert-themes": "node frontend/js/features/source-editor/themes/scripts/convert.js",
"cypress:open-ct": "OVERLEAF_CONFIG=$PWD/config/settings.webpack.js cypress open --component",
"cypress:run-ct": "OVERLEAF_CONFIG=$PWD/config/settings.webpack.js cypress run --component --browser chrome",
"cypress:docker:open-ct": "DOCKER_USER=\"$(id -u):$(id -g)\" docker compose -f docker-compose.cypress.yml run --rm cypress run cypress:open-ct",
"cypress:docker:run-ct": "DOCKER_USER=\"$(id -u):$(id -g)\" docker compose -f docker-compose.cypress.yml run --rm cypress run cypress:run-ct --browser chrome",
"cypress:docker:open-ct": "USER_UID=$(id -u) USER_GID=$(id -g) docker compose -f docker-compose.cypress.yml run --rm cypress run cypress:open-ct",
"cypress:docker:run-ct": "USER_UID=$(id -u) USER_GID=$(id -g) docker compose -f docker-compose.cypress.yml run --rm cypress run cypress:run-ct --browser chrome",
"lezer-latex:generate": "node scripts/lezer-latex/generate.mjs",
"lezer-latex:run": "node scripts/lezer-latex/run.mjs",
"lezer-latex:benchmark": "node scripts/lezer-latex/benchmark.mjs",