Makefile 3.0 KB

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