Makefile 4.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108
  1. all: test-e2e
  2. # We are updating the docker compose config via the host-admin service.
  3. # The host-admin service is running inside docker and has its own file-system layout.
  4. # We need to have both file-system layouts agree on the path for the docker compose project.
  5. # Notable the container labels com.docker.compose.project.working_dir and com.docker.compose.project.config_files need to match when creating containers from the docker host (how you started things) and from host-admin (how tests reconfigure the instance).
  6. export PWD = $(shell pwd)
  7. export TEX_LIVE_DOCKER_IMAGE ?= us-east1-docker.pkg.dev/overleaf-ops/ol-docker/texlive-full:2023.1
  8. export ALL_TEX_LIVE_DOCKER_IMAGES ?= us-east1-docker.pkg.dev/overleaf-ops/ol-docker/texlive-full:2023.1,us-east1-docker.pkg.dev/overleaf-ops/ol-docker/texlive-full:2022.1
  9. export IMAGE_TAG_CE ?= sharelatex/sharelatex:main
  10. export IMAGE_TAG_PRO ?= us-east1-docker.pkg.dev/overleaf-ops/ol-docker/pro:main
  11. export CYPRESS_SHARD ?=
  12. export COMPOSE_PROJECT_NAME ?= test
  13. export DOCKER_USER := $(shell id -u):$(shell id -g)
  14. test-e2e-native:
  15. docker compose -f docker-compose.yml -f docker-compose.native.yml up --no-log-prefix sharelatex host-admin -d
  16. CYPRESS_HOST_ADMIN_URL='http://localhost:8081' \
  17. CYPRESS_SAML_URL='http://localhost:8082' \
  18. CYPRESS_MAILTRAP_URL='http://localhost:8083' \
  19. npm run cypress:open
  20. test-e2e:
  21. docker compose build host-admin
  22. docker compose up --detach --wait host-admin
  23. docker compose up --detach --wait mongo || { docker compose logs mongo; exit 42; }
  24. docker compose up --no-log-prefix --exit-code-from=e2e e2e host-admin || { docker compose logs mongo; exit 42; }
  25. test-e2e-open:
  26. docker compose up --detach --wait host-admin
  27. docker compose up --detach --wait mongo || { docker compose logs mongo; exit 42; }
  28. docker compose up --no-log-prefix --exit-code-from=e2e-open e2e-open host-admin || { docker compose logs mongo; exit 42; }
  29. SHARD_PROJECT_NAMES = \
  30. test-ce-default \
  31. test-ce-custom-1 \
  32. test-pro-default-1 \
  33. test-pro-default-2 \
  34. test-pro-custom-1 \
  35. test-pro-custom-2 \
  36. test-pro-custom-3 \
  37. test-pro-custom-4
  38. CLEAN_SHARDS=$(addprefix clean/,$(SHARD_PROJECT_NAMES))
  39. clean: $(CLEAN_SHARDS)
  40. -docker compose run --no-deps --rm --entrypoint rm host-admin -rf docker-compose.override.yml docker-compose.*_*.yml data/
  41. -docker compose down --remove-orphans --rmi local --timeout 0 --volumes
  42. $(CLEAN_SHARDS): clean/%:
  43. -COMPOSE_PROJECT_NAME=$* docker compose down --remove-orphans --rmi local --timeout 0 --volumes
  44. prefetch: prefetch_default
  45. prefetch_default: prefetch_default_compose
  46. prefetch_default_compose:
  47. docker compose pull e2e mongo redis
  48. prefetch_default: prefetch_default_compose_build
  49. prefetch_default_compose_build:
  50. docker compose build host-admin
  51. prefetch: prefetch_custom
  52. prefetch_custom: prefetch_custom_compose_pull
  53. prefetch_custom_compose_pull:
  54. docker compose pull saml ldap
  55. prefetch_custom: prefetch_custom_texlive_2023
  56. prefetch_custom_texlive_2023:
  57. docker pull us-east1-docker.pkg.dev/overleaf-ops/ol-docker/texlive-full:2023.1
  58. docker tag us-east1-docker.pkg.dev/overleaf-ops/ol-docker/texlive-full:2023.1 quay.io/sharelatex/texlive-full:2023.1
  59. prefetch_custom: prefetch_custom_texlive_2022
  60. prefetch_custom_texlive_2022:
  61. docker pull us-east1-docker.pkg.dev/overleaf-ops/ol-docker/texlive-full:2022.1
  62. docker tag us-east1-docker.pkg.dev/overleaf-ops/ol-docker/texlive-full:2022.1 quay.io/sharelatex/texlive-full:2022.1
  63. prefetch_custom: prefetch_old_4_2
  64. prefetch_old_4_2:
  65. docker pull $(IMAGE_TAG_PRO:main=4.2)
  66. prefetch_custom: prefetch_old_5_0
  67. prefetch_old_5_0:
  68. docker pull $(IMAGE_TAG_PRO:main=5.0.1-RC1)
  69. docker pull $(IMAGE_TAG_PRO:main=5.0)
  70. prefetch_custom: build_hotfix_5_5_5
  71. build_hotfix_5_5_5:
  72. docker pull $(IMAGE_TAG_PRO:main=5.5.4)
  73. docker tag $(IMAGE_TAG_PRO:main=5.5.4) quay.io/sharelatex/sharelatex-pro:5.5.4
  74. cd ../../server-pro/hotfix/5.5.5 && docker build -t $(IMAGE_TAG_PRO:main=5.5.5) .
  75. # Google Cloud Build runs on a very ancient Docker version that does not support the subdir flag.
  76. # Use services -> mailtrap -> build -> context = https://github.com/dbck/docker-mailtrap.git#v1.5.0:build in docker-compose.yml eventually.
  77. prefetch_default_compose_build: build_mailtrap
  78. build_mailtrap:
  79. git clone https://github.com/dbck/docker-mailtrap.git || true && cd docker-mailtrap && git checkout v1.5.0
  80. docker build -t mailtrap docker-mailtrap/build
  81. npm_install_in_docker: export COMPOSE_PROJECT_NAME=
  82. npm_install_in_docker:
  83. $(MAKE) -C ../../ .metadata/docker-image/monorepo
  84. cd ../../ && bin/run --no-deps --workdir /overleaf/server-ce/test monorepo npm --no-dry-run install
  85. format_in_docker: export COMPOSE_PROJECT_NAME=
  86. format_in_docker:
  87. $(MAKE) -C ../../ .metadata/docker-image/monorepo
  88. cd ../../ && bin/run --no-deps --workdir /overleaf/server-ce/test monorepo npm run format
  89. .PHONY: test-e2e test-e2e-open