Makefile 5.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126
  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 MONOREPO = $(shell cd ../../ && pwd)
  8. export TEX_LIVE_DOCKER_IMAGE ?= us-east1-docker.pkg.dev/overleaf-ops/ol-docker/texlive-full:2023.1
  9. 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
  10. export IMAGE_TAG_CE ?= sharelatex/sharelatex:main
  11. export IMAGE_TAG_PRO ?= us-east1-docker.pkg.dev/overleaf-ops/ol-docker/pro:main
  12. export IMAGE_TAG_GIT_BRIDGE ?= us-east1-docker.pkg.dev/overleaf-ops/ol-docker/git-bridge:main
  13. export CYPRESS_SHARD ?=
  14. export COMPOSE_PROJECT_NAME ?= test
  15. export USER_UID=$(shell id -u)
  16. export USER_GID=$(shell id -g)
  17. IMAGE_TAG_PRO_BASE := $(shell echo $(IMAGE_TAG_PRO) | sed -E s/:.+//)
  18. print-debug-logs:
  19. -docker compose logs --timestamps --tail=100 e2e
  20. -docker compose logs --timestamps --tail=100 mongo
  21. -docker compose logs --timestamps --tail=100 redis
  22. -docker compose logs --timestamps --tail=100 mailtrap
  23. -docker compose logs --timestamps --tail=100 saml
  24. -docker compose logs --timestamps --tail=100 ldap
  25. -docker compose logs --timestamps --tail=100 git-bridge
  26. -docker compose logs --timestamps --tail=100 host-admin
  27. -docker compose logs --timestamps sharelatex
  28. -docker compose exec sharelatex bash -c 'tail -n100 /var/log/overleaf/*.log'
  29. test-e2e-native:
  30. docker compose -f docker-compose.yml -f docker-compose.native.yml up --no-log-prefix sharelatex host-admin -d
  31. CYPRESS_BASE_URL='http://127.0.0.1:3231' \
  32. CYPRESS_HOST_ADMIN_URL='http://127.0.0.1:3232' \
  33. CYPRESS_SAML_URL='http://127.0.0.1:3233' \
  34. CYPRESS_MAILTRAP_URL='http://127.0.0.1:3234' \
  35. yarn run cypress:open
  36. # For testing "native" on Linux
  37. test-e2e-native-linux:
  38. docker compose -f docker-compose.yml -f docker-compose.native.yml up --no-log-prefix sharelatex host-admin -d
  39. CYPRESS_BASE_URL='http://127.0.0.1:3231' \
  40. CYPRESS_HOST_ADMIN_URL='http://127.0.0.1:3232' \
  41. CYPRESS_SAML_URL='http://127.0.0.1:3233' \
  42. CYPRESS_MAILTRAP_URL='http://127.0.0.1:3234' \
  43. docker compose -f docker-compose.yml -f docker-compose.native.yml up --no-log-prefix cypress
  44. test-e2e:
  45. docker compose build host-admin e2e
  46. docker compose up --detach --wait host-admin
  47. docker compose up --detach --wait mongo
  48. docker compose up --no-log-prefix --exit-code-from=e2e e2e host-admin
  49. test-e2e-open:
  50. docker compose up --detach --wait host-admin
  51. docker compose up --detach --wait mongo
  52. docker compose up --no-log-prefix --exit-code-from=e2e-open e2e-open host-admin
  53. SHARD_PROJECT_NAMES = \
  54. test-ce-default \
  55. test-ce-custom-1 \
  56. test-pro-default-1 \
  57. test-pro-default-2 \
  58. test-pro-custom-1 \
  59. test-pro-custom-2 \
  60. test-pro-custom-3 \
  61. test-pro-custom-4
  62. CLEAN_SHARDS=$(addprefix clean/,$(SHARD_PROJECT_NAMES))
  63. clean: $(CLEAN_SHARDS)
  64. -docker compose run --no-deps --rm --entrypoint rm host-admin -rf docker-compose.override.yml docker-compose.*_*.yml reports/ data/
  65. -docker compose down --remove-orphans --rmi local --timeout 0 --volumes
  66. $(CLEAN_SHARDS): clean/%:
  67. -COMPOSE_PROJECT_NAME=$* docker compose down --remove-orphans --rmi local --timeout 0 --volumes
  68. prefetch: prefetch_default
  69. prefetch_default: prefetch_default_compose
  70. prefetch_default_compose:
  71. docker compose pull e2e mongo redis
  72. prefetch_default: prefetch_default_compose_build
  73. prefetch_default_compose_build:
  74. docker compose build host-admin e2e
  75. prefetch: prefetch_custom
  76. prefetch_custom: prefetch_custom_compose_pull
  77. prefetch_custom_compose_pull:
  78. docker compose pull saml ldap
  79. prefetch_custom: prefetch_custom_texlive_2023
  80. prefetch_custom_texlive_2023:
  81. docker pull us-east1-docker.pkg.dev/overleaf-ops/ol-docker/texlive-full:2023.1
  82. docker tag us-east1-docker.pkg.dev/overleaf-ops/ol-docker/texlive-full:2023.1 quay.io/sharelatex/texlive-full:2023.1
  83. prefetch_custom: prefetch_custom_texlive_2022
  84. prefetch_custom_texlive_2022:
  85. docker pull us-east1-docker.pkg.dev/overleaf-ops/ol-docker/texlive-full:2022.1
  86. docker tag us-east1-docker.pkg.dev/overleaf-ops/ol-docker/texlive-full:2022.1 quay.io/sharelatex/texlive-full:2022.1
  87. prefetch_custom: prefetch_old_4_2
  88. prefetch_old_4_2:
  89. docker pull $(IMAGE_TAG_PRO_BASE):4.2
  90. prefetch_custom: prefetch_old_5_0
  91. prefetch_old_5_0:
  92. docker pull $(IMAGE_TAG_PRO_BASE):5.0
  93. prefetch_custom: build_hotfix_5_5_5
  94. build_hotfix_5_5_5:
  95. docker pull $(IMAGE_TAG_PRO_BASE):5.5.4
  96. cd ../../server-pro/hotfix/5.5.5 && docker build --build-arg BASE_IMAGE=$(IMAGE_TAG_PRO_BASE):5.5.4 -t $(IMAGE_TAG_PRO_BASE):5.5.5 .
  97. # Google Cloud Build runs on a very ancient Docker version that does not support the subdir flag.
  98. # Use services -> mailtrap -> build -> context = https://github.com/dbck/docker-mailtrap.git#v1.5.0:build in docker-compose.yml eventually.
  99. prefetch_default_compose_build: build_mailtrap
  100. build_mailtrap:
  101. git clone https://github.com/dbck/docker-mailtrap.git || true && cd docker-mailtrap && git checkout v1.5.0
  102. docker build -t mailtrap docker-mailtrap/build
  103. prefetch_default_compose_build: build_cypress
  104. build_cypress:
  105. docker compose build e2e
  106. .PHONY: test-e2e test-e2e-open