Makefile 2.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293
  1. # git-bridge makefile
  2. MVN_OPTS := --no-transfer-progress
  3. MVN_TARGET := target/writelatex-git-bridge-1.0-SNAPSHOT-jar-with-dependencies.jar
  4. export BUILD_NUMBER ?= local
  5. export BRANCH_NAME ?= $(shell git rev-parse --abbrev-ref HEAD)
  6. export BRANCH_NAME_TAG_SAFE = $(shell echo $(BRANCH_NAME) | sed 's/\//\-\-/g' | cut -c1-96)
  7. export COMMIT_SHA ?= $(shell git rev-parse HEAD)
  8. PROJECT_NAME = git-bridge
  9. IMAGE_CI ?= ci/$(PROJECT_NAME):$(BRANCH_NAME_TAG_SAFE)-$(BUILD_NUMBER)
  10. IMAGE_REPO ?= us-east1-docker.pkg.dev/overleaf-ops/ol-docker/$(PROJECT_NAME)
  11. IMAGE_REPO_BRANCH ?= $(IMAGE_REPO):$(BRANCH_NAME_TAG_SAFE)
  12. IMAGE_REPO_MAIN ?= $(IMAGE_REPO):main
  13. IMAGE_REPO_FINAL ?= $(IMAGE_REPO_BRANCH)-$(BUILD_NUMBER)
  14. .PHONY: print-branch-tag-safe
  15. print-branch-tag-safe:
  16. @echo $(BRANCH_NAME_TAG_SAFE)
  17. runtime-conf:
  18. /opt/envsubst < conf/envsubst_template.json > conf/runtime.json
  19. run: $(MVN_TARGET) runtime-conf
  20. @exec java $(GIT_BRIDGE_JVM_ARGS) -jar $(MVN_TARGET) conf/runtime.json
  21. $(MVN_TARGET): $(shell find src -type f) pom.xml
  22. mvn $(MVN_OPTS) package -DskipTests
  23. build: $(MVN_TARGET)
  24. docker_build_base:
  25. docker build --pull \
  26. --build-arg BUILDKIT_INLINE_CACHE=1 \
  27. --cache-from $(IMAGE_REPO_BRANCH) \
  28. --cache-from $(IMAGE_REPO_MAIN) \
  29. --tag $(IMAGE_CI) \
  30. --target base \
  31. .
  32. docker_build:
  33. docker build --pull \
  34. --build-arg BUILDKIT_INLINE_CACHE=1 \
  35. --cache-from $(IMAGE_REPO_BRANCH) \
  36. --cache-from $(IMAGE_REPO_MAIN) \
  37. --tag $(IMAGE_REPO_BRANCH) \
  38. --tag $(IMAGE_REPO_FINAL) \
  39. .
  40. format:
  41. mvn $(MVN_OPTS) com.spotify.fmt:fmt-maven-plugin:check
  42. docker_format:
  43. docker run --rm -v $(PWD):$(PWD) -w $(PWD) --user node $(IMAGE_CI) make format
  44. format_fix:
  45. mvn $(MVN_OPTS) com.spotify.fmt:fmt-maven-plugin:format
  46. test:
  47. mvn $(MVN_OPTS) test
  48. docker_test:
  49. docker run --rm -v $(PWD):$(PWD) -w $(PWD) --user node $(IMAGE_CI) make test
  50. clean:
  51. mvn $(MVN_OPTS) clean
  52. package: clean
  53. mvn $(MVN_OPTS) package -DskipTests
  54. refresh_cache: refresh_cache_branch
  55. refresh_cache_branch:
  56. docker inspect $(IMAGE_REPO_BRANCH) > /dev/null && docker pull $(IMAGE_REPO_BRANCH) || true
  57. refresh_cache: refresh_cache_latest
  58. refresh_cache_latest:
  59. docker inspect $(IMAGE_REPO_MAIN) > /dev/null && docker pull $(IMAGE_REPO_MAIN) || true
  60. push:
  61. docker push $(IMAGE_REPO_FINAL)
  62. push_branch:
  63. docker push $(IMAGE_REPO_BRANCH)
  64. clean_ci:
  65. -docker rmi -f $(IMAGE_CI) $(IMAGE_REPO_FINAL)
  66. -git clean -xdf .
  67. .PHONY: run package build clean test runtime-conf