Makefile 2.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788
  1. FORCE_REBUILD ?= 0
  2. JITSI_RELEASE ?= stable
  3. JITSI_BUILD ?= unstable
  4. JITSI_REPO ?= jitsi
  5. NATIVE_ARCH ?= $(shell uname -m)
  6. JITSI_MULTIARCH_SERVICES := base base-java web prosody jicofo jvb jibri
  7. JITSI_AMD64ONLY_SERVICES := jigasi
  8. ifeq ($(NATIVE_ARCH),x86_64)
  9. TARGETPLATFORM := linux/amd64
  10. JITSI_SERVICES := base base-java web prosody jicofo jvb jigasi jibri
  11. else ifeq ($(NATIVE_ARCH),aarch64)
  12. TARGETPLATFORM := linux/arm64
  13. JITSI_SERVICES := base base-java web prosody jicofo jvb jibri
  14. else
  15. TARGETPLATFORM := unsupported
  16. JITSI_SERVICES := dummy
  17. endif
  18. BUILD_ARGS := \
  19. --build-arg JITSI_REPO=$(JITSI_REPO) \
  20. --build-arg JITSI_RELEASE=$(JITSI_RELEASE) \
  21. --build-arg TARGETPLATFORM=$(TARGETPLATFORM)
  22. ifeq ($(FORCE_REBUILD), 1)
  23. BUILD_ARGS := $(BUILD_ARGS) --no-cache
  24. endif
  25. all: build-all
  26. release:
  27. @$(foreach SERVICE, $(JITSI_MULTIARCH_SERVICES), $(MAKE) --no-print-directory JITSI_SERVICE=$(SERVICE) _buildx_multiarch;)
  28. @$(foreach SERVICE, $(JITSI_AMD64ONLY_SERVICES), $(MAKE) --no-print-directory JITSI_SERVICE=$(SERVICE) _buildx_amd64;)
  29. _buildx_multiarch:
  30. docker buildx build \
  31. --platform linux/amd64,linux/arm64 \
  32. --progress=plain \
  33. $(BUILD_ARGS) --build-arg BASE_TAG=$(JITSI_BUILD) \
  34. --pull --push \
  35. --tag $(JITSI_REPO)/$(JITSI_SERVICE):$(JITSI_BUILD) \
  36. --tag $(JITSI_REPO)/$(JITSI_SERVICE):$(JITSI_RELEASE) \
  37. $(JITSI_SERVICE)
  38. _buildx_amd64:
  39. docker buildx build \
  40. --platform linux/amd64 \
  41. --progress=plain \
  42. $(BUILD_ARGS) --build-arg BASE_TAG=$(JITSI_BUILD) \
  43. --pull --push \
  44. --tag $(JITSI_REPO)/$(JITSI_SERVICE):$(JITSI_BUILD) \
  45. --tag $(JITSI_REPO)/$(JITSI_SERVICE):$(JITSI_RELEASE) \
  46. $(JITSI_SERVICE)
  47. ifeq ($(TARGETPLATFORM), unsupported)
  48. build:
  49. @echo "Unsupported native architecture"
  50. @exit 1
  51. else
  52. build:
  53. @echo "Building for $(TARGETPLATFORM)"
  54. docker build $(BUILD_ARGS) --progress plain --tag $(JITSI_REPO)/$(JITSI_SERVICE) $(JITSI_SERVICE)/
  55. endif
  56. $(addprefix build_,$(JITSI_SERVICES)):
  57. $(MAKE) --no-print-directory JITSI_SERVICE=$(patsubst build_%,%,$@) build
  58. tag:
  59. docker tag $(JITSI_REPO)/$(JITSI_SERVICE) $(JITSI_REPO)/$(JITSI_SERVICE):$(JITSI_BUILD)
  60. push:
  61. docker push $(JITSI_REPO)/$(JITSI_SERVICE):$(JITSI_BUILD)
  62. %-all:
  63. @$(foreach SERVICE, $(JITSI_SERVICES), $(MAKE) --no-print-directory JITSI_SERVICE=$(SERVICE) $(subst -all,;,$@))
  64. clean:
  65. docker-compose stop
  66. docker-compose rm
  67. docker network prune
  68. prepare:
  69. docker pull debian:bullseye-slim
  70. FORCE_REBUILD=1 $(MAKE)
  71. .PHONY: all build tag push clean prepare release $(addprefix build_,$(JITSI_SERVICES))