Makefile 2.9 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182
  1. # Makefile
  2. MONOREPO_ROOT := ../
  3. HERE=$(shell pwd)
  4. export MONOREPO_REVISION := $(shell git rev-parse HEAD)
  5. export BRANCH_NAME ?= $(shell git rev-parse --abbrev-ref HEAD)
  6. export BRANCH_NAME_TAG_SAFE ?= $(subst /,--,$(BRANCH_NAME))
  7. export OVERLEAF_BASE_BRANCH ?= sharelatex/sharelatex-base:$(BRANCH_NAME_TAG_SAFE)
  8. export OVERLEAF_BASE_LATEST ?= sharelatex/sharelatex-base
  9. export OVERLEAF_BASE_TAG ?= sharelatex/sharelatex-base:$(BRANCH_NAME_TAG_SAFE)-$(MONOREPO_REVISION)
  10. export OVERLEAF_BRANCH ?= sharelatex/sharelatex:$(BRANCH_NAME_TAG_SAFE)
  11. export OVERLEAF_LATEST ?= sharelatex/sharelatex
  12. export OVERLEAF_TAG ?= sharelatex/sharelatex:$(BRANCH_NAME_TAG_SAFE)-$(MONOREPO_REVISION)
  13. all: build-base build-community
  14. clean:
  15. -docker rmi --force $(OVERLEAF_BASE_TAG) $(OVERLEAF_TAG)
  16. refresh-cache: refresh-cache-branch
  17. refresh-cache-branch:
  18. docker inspect $(OVERLEAF_BASE_BRANCH) > /dev/null && docker pull $(OVERLEAF_BASE_BRANCH) || true
  19. docker inspect $(OVERLEAF_BRANCH) > /dev/null && docker pull $(OVERLEAF_BRANCH) || true
  20. refresh-cache: refresh-cache-latest
  21. refresh-cache-latest:
  22. docker inspect $(OVERLEAF_BASE_LATEST) > /dev/null && docker pull $(OVERLEAF_BASE_LATEST) || true
  23. docker inspect $(OVERLEAF_LATEST) > /dev/null && docker pull $(OVERLEAF_LATEST) || true
  24. build-base:
  25. cp .dockerignore $(MONOREPO_ROOT)
  26. docker build \
  27. --build-arg BUILDKIT_INLINE_CACHE=1 \
  28. --file Dockerfile-base \
  29. --pull \
  30. --cache-from $(OVERLEAF_BASE_LATEST) \
  31. --cache-from $(OVERLEAF_BASE_BRANCH) \
  32. --tag $(OVERLEAF_BASE_TAG) \
  33. --tag $(OVERLEAF_BASE_BRANCH) \
  34. $(MONOREPO_ROOT)
  35. build-community:
  36. cp .dockerignore $(MONOREPO_ROOT)
  37. docker build \
  38. --build-arg BUILDKIT_INLINE_CACHE=1 \
  39. --build-arg OVERLEAF_BASE_TAG \
  40. --label "com.overleaf.ce.revision=$(MONOREPO_REVISION)" \
  41. --cache-from $(OVERLEAF_LATEST) \
  42. --cache-from $(OVERLEAF_BRANCH) \
  43. --file Dockerfile \
  44. --tag $(OVERLEAF_TAG) \
  45. --tag $(OVERLEAF_BRANCH) \
  46. $(MONOREPO_ROOT)
  47. push:
  48. docker push $(OVERLEAF_BASE_TAG)
  49. docker push $(OVERLEAF_BASE_BRANCH)
  50. docker push $(OVERLEAF_TAG)
  51. docker push $(OVERLEAF_BRANCH)
  52. SHELLCHECK_OPTS = \
  53. --shell=bash \
  54. --external-sources \
  55. --exclude=SC1091
  56. SHELLCHECK_COLOR := $(if $(CI),--color=never,--color)
  57. SHELLCHECK_FILES := { git ls-files "*.sh" -z; git grep -Plz "\A\#\!.*bash"; } | sort -zu
  58. shellcheck:
  59. @$(SHELLCHECK_FILES) | xargs -0 -r docker run --rm -v $(HERE):/mnt -w /mnt \
  60. koalaman/shellcheck:stable $(SHELLCHECK_OPTS) $(SHELLCHECK_COLOR)
  61. shellcheck_fix:
  62. @$(SHELLCHECK_FILES) | while IFS= read -r -d '' file; do \
  63. diff=$$(docker run --rm -v $(HERE):/mnt -w /mnt koalaman/shellcheck:stable $(SHELLCHECK_OPTS) --format=diff "$$file" 2>/dev/null); \
  64. if [ -n "$$diff" ] && ! echo "$$diff" | patch -p1 >/dev/null 2>&1; then echo "\033[31m$$file\033[0m"; \
  65. elif [ -n "$$diff" ]; then echo "$$file"; \
  66. else echo "\033[2m$$file\033[0m"; fi \
  67. done
  68. .PHONY: all \
  69. build-base build-community \
  70. shellcheck shellcheck_fix