Makefile 2.4 KB

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