Makefile 2.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889
  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. BRANCH_NAME_TAG_SAFE = $(shell echo $(BRANCH_NAME) | sed 's/\//\-\-/g')
  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. runtime-conf:
  15. /opt/envsubst < conf/envsubst_template.json > conf/runtime.json
  16. run: $(MVN_TARGET) runtime-conf
  17. java $(GIT_BRIDGE_JVM_ARGS) -jar $(MVN_TARGET) conf/runtime.json
  18. $(MVN_TARGET): $(shell find src -type f) pom.xml
  19. mvn $(MVN_OPTS) package -DskipTests
  20. build: $(MVN_TARGET)
  21. docker_build_base:
  22. docker build --pull \
  23. --build-arg BUILDKIT_INLINE_CACHE=1 \
  24. --cache-from $(IMAGE_REPO_BRANCH) \
  25. --cache-from $(IMAGE_REPO_MAIN) \
  26. --tag $(IMAGE_CI) \
  27. --target base \
  28. .
  29. docker_build:
  30. docker build --pull \
  31. --build-arg BUILDKIT_INLINE_CACHE=1 \
  32. --cache-from $(IMAGE_REPO_BRANCH) \
  33. --cache-from $(IMAGE_REPO_MAIN) \
  34. --tag $(IMAGE_REPO_BRANCH) \
  35. --tag $(IMAGE_REPO_FINAL) \
  36. .
  37. format:
  38. mvn $(MVN_OPTS) com.spotify.fmt:fmt-maven-plugin:check
  39. docker_format:
  40. docker run --rm -v $(PWD):$(PWD) -w $(PWD) --user node $(IMAGE_CI) make format
  41. format_fix:
  42. mvn $(MVN_OPTS) com.spotify.fmt:fmt-maven-plugin:format
  43. test:
  44. mvn $(MVN_OPTS) test
  45. docker_test:
  46. docker run --rm -v $(PWD):$(PWD) -w $(PWD) --user node $(IMAGE_CI) make test
  47. clean:
  48. mvn $(MVN_OPTS) clean
  49. package: clean
  50. mvn $(MVN_OPTS) package -DskipTests
  51. refresh_cache: refresh_cache_branch
  52. refresh_cache_branch:
  53. docker inspect $(IMAGE_REPO_BRANCH) > /dev/null && docker pull $(IMAGE_REPO_BRANCH) || true
  54. refresh_cache: refresh_cache_latest
  55. refresh_cache_latest:
  56. docker inspect $(IMAGE_REPO_MAIN) > /dev/null && docker pull $(IMAGE_REPO_MAIN) || true
  57. push:
  58. docker push $(IMAGE_REPO_FINAL)
  59. push_branch:
  60. docker push $(IMAGE_REPO_BRANCH)
  61. clean_ci:
  62. -docker rmi -f $(IMAGE_CI) $(IMAGE_REPO_FINAL)
  63. -git clean -xdf .
  64. .PHONY: run package build clean test runtime-conf