github.com/masterhung0112/hk_server/v5@v5.0.0-20220302090640-ec71aef15e1c/build/release.mk (about)

     1  dist: | check-style test package
     2  build-linux:
     3  	@echo Build Linux amd64
     4  ifeq ($(BUILDER_GOOS_GOARCH),"linux_amd64")
     5  	env GOOS=linux GOARCH=amd64 $(GO) build -o $(GOBIN) $(GOFLAGS) -trimpath -ldflags '$(LDFLAGS)' ./...
     6  else
     7  	mkdir -p $(GOBIN)/linux_amd64
     8  	env GOOS=linux GOARCH=amd64 $(GO) build -o $(GOBIN)/linux_amd64 $(GOFLAGS) -trimpath -ldflags '$(LDFLAGS)' ./...
     9  endif
    10  
    11  build-osx:
    12  	@echo Build OSX amd64
    13  ifeq ($(BUILDER_GOOS_GOARCH),"darwin_amd64")
    14  	env GOOS=darwin GOARCH=amd64 $(GO) build -o $(GOBIN) $(GOFLAGS) -trimpath -ldflags '$(LDFLAGS)' ./...
    15  else
    16  	mkdir -p $(GOBIN)/darwin_amd64
    17  	env GOOS=darwin GOARCH=amd64 $(GO) build -o $(GOBIN)/darwin_amd64 $(GOFLAGS) -trimpath -ldflags '$(LDFLAGS)' ./...
    18  endif
    19  
    20  build-windows:
    21  	@echo Build Windows amd64
    22  ifeq ($(BUILDER_GOOS_GOARCH),"windows_amd64")
    23  	env GOOS=windows GOARCH=amd64 $(GO) build -o $(GOBIN) $(GOFLAGS) -trimpath -ldflags '$(LDFLAGS)' ./...
    24  else
    25  	mkdir -p $(GOBIN)/windows_amd64
    26  	env GOOS=windows GOARCH=amd64 $(GO) build -o $(GOBIN)/windows_amd64 $(GOFLAGS) -trimpath -ldflags '$(LDFLAGS)' ./...
    27  endif
    28  
    29  build-cmd-linux:
    30  	@echo Build Linux amd64
    31  ifeq ($(BUILDER_GOOS_GOARCH),"linux_amd64")
    32  	env GOOS=linux GOARCH=amd64 $(GO) build -o $(GOBIN) $(GOFLAGS) -trimpath -ldflags '$(LDFLAGS)' ./cmd/...
    33  else
    34  	mkdir -p $(GOBIN)/linux_amd64
    35  	env GOOS=linux GOARCH=amd64 $(GO) build -o $(GOBIN)/linux_amd64 $(GOFLAGS) -trimpath -ldflags '$(LDFLAGS)' ./cmd/...
    36  endif
    37  
    38  build-cmd-osx:
    39  	@echo Build OSX amd64
    40  ifeq ($(BUILDER_GOOS_GOARCH),"darwin_amd64")
    41  	env GOOS=darwin GOARCH=amd64 $(GO) build -o $(GOBIN) $(GOFLAGS) -trimpath -ldflags '$(LDFLAGS)' ./cmd/...
    42  else
    43  	mkdir -p $(GOBIN)/darwin_amd64
    44  	env GOOS=darwin GOARCH=amd64 $(GO) build -o $(GOBIN)/darwin_amd64 $(GOFLAGS) -trimpath -ldflags '$(LDFLAGS)' ./cmd/...
    45  endif
    46  
    47  build-cmd-windows:
    48  	@echo Build Windows amd64
    49  ifeq ($(BUILDER_GOOS_GOARCH),"windows_amd64")
    50  	env GOOS=windows GOARCH=amd64 $(GO) build -o $(GOBIN) $(GOFLAGS) -trimpath -ldflags '$(LDFLAGS)' ./cmd/...
    51  else
    52  	mkdir -p $(GOBIN)/windows_amd64
    53  	env GOOS=windows GOARCH=amd64 $(GO) build -o $(GOBIN)/windows_amd64 $(GOFLAGS) -trimpath -ldflags '$(LDFLAGS)' ./cmd/...
    54  endif
    55  
    56  build: build-linux build-windows build-osx
    57  
    58  build-cmd: build-cmd-linux build-cmd-windows build-cmd-osx
    59  
    60  build-client:
    61  	@echo Building hkserver web app
    62  
    63  	cd $(BUILD_WEBAPP_DIR) && $(MAKE) build
    64  
    65  package:
    66  	@ echo Packaging hkserver
    67  	@# Remove any old files
    68  	rm -Rf $(DIST_ROOT)
    69  
    70  	@# Create needed directories
    71  	mkdir -p $(DIST_PATH)/bin
    72  	mkdir -p $(DIST_PATH)/logs
    73  	mkdir -p $(DIST_PATH)/prepackaged_plugins
    74  
    75  	@# Resource directories
    76  	mkdir -p $(DIST_PATH)/config
    77  	cp -L config/README.md $(DIST_PATH)/config
    78  	OUTPUT_CONFIG=$(PWD)/$(DIST_PATH)/config/config.json go run ./scripts/config_generator
    79  	cp -RL fonts $(DIST_PATH)
    80  	cp -RL templates $(DIST_PATH)
    81  	rm -rf $(DIST_PATH)/templates/*.mjml $(DIST_PATH)/templates/partials/
    82  	cp -RL i18n $(DIST_PATH)
    83  
    84  	@# Disable developer settings
    85  	sed -i'' -e 's|"ConsoleLevel": "DEBUG"|"ConsoleLevel": "INFO"|g' $(DIST_PATH)/config/config.json
    86  	sed -i'' -e 's|"SiteURL": "http://localhost:8065"|"SiteURL": ""|g' $(DIST_PATH)/config/config.json
    87  
    88  	@# Reset email sending to original configuration
    89  	sed -i'' -e 's|"SendEmailNotifications": true,|"SendEmailNotifications": false,|g' $(DIST_PATH)/config/config.json
    90  	sed -i'' -e 's|"FeedbackEmail": "test@example.com",|"FeedbackEmail": "",|g' $(DIST_PATH)/config/config.json
    91  	sed -i'' -e 's|"ReplyToAddress": "test@example.com",|"ReplyToAddress": "",|g' $(DIST_PATH)/config/config.json
    92  	sed -i'' -e 's|"SMTPServer": "localhost",|"SMTPServer": "",|g' $(DIST_PATH)/config/config.json
    93  	sed -i'' -e 's|"SMTPPort": "2500",|"SMTPPort": "",|g' $(DIST_PATH)/config/config.json
    94  
    95  	@# Package webapp
    96  	mkdir -p $(DIST_PATH)/client
    97  	cp -RL $(BUILD_WEBAPP_DIR)/dist/* $(DIST_PATH)/client
    98  
    99  	@#Download MMCTL
   100  	scripts/download_mmctl_release.sh "" $(DIST_PATH)/bin
   101  
   102  	@# Help files
   103  ifeq ($(BUILD_ENTERPRISE_READY),true)
   104  	cp $(BUILD_ENTERPRISE_DIR)/ENTERPRISE-EDITION-LICENSE.txt $(DIST_PATH)
   105  	cp -L $(BUILD_ENTERPRISE_DIR)/cloud/config/cloud_defaults.json $(DIST_PATH)/config
   106  else
   107  	cp build/MIT-COMPILED-LICENSE.md $(DIST_PATH)
   108  endif
   109  	cp NOTICE.txt $(DIST_PATH)
   110  	cp README.md $(DIST_PATH)
   111  	if [ -f ../manifest.txt ]; then \
   112  		cp ../manifest.txt $(DIST_PATH); \
   113  	fi
   114  
   115  	@# Import hkserver plugin public key
   116  	gpg --import build/plugin-production-public-key.gpg
   117  
   118  	@# Download prepackaged plugins
   119  	mkdir -p tmpprepackaged
   120  	@cd tmpprepackaged && for plugin_package in $(PLUGIN_PACKAGES) ; do \
   121  		for ARCH in "osx-amd64" "windows-amd64" "linux-amd64" ; do \
   122  			curl -f -O -L https://plugins-store.test.hkserver.com/release/$$plugin_package-$$ARCH.tar.gz; \
   123  			curl -f -O -L https://plugins-store.test.hkserver.com/release/$$plugin_package-$$ARCH.tar.gz.sig; \
   124  		done; \
   125  	done
   126  
   127  
   128  	@# ----- PLATFORM SPECIFIC -----
   129  
   130  	@# Make osx package
   131  	@# Copy binary
   132  ifeq ($(BUILDER_GOOS_GOARCH),"darwin_amd64")
   133  	cp $(GOBIN)/hkserver $(DIST_PATH)/bin # from native bin dir, not cross-compiled
   134  else
   135  	cp $(GOBIN)/darwin_amd64/hkserver $(DIST_PATH)/bin # from cross-compiled bin dir
   136  endif
   137  	#Download MMCTL for OSX
   138  	scripts/download_mmctl_release.sh "Darwin" $(DIST_PATH)/bin
   139  	@# Prepackage plugins
   140  	@for plugin_package in $(PLUGIN_PACKAGES) ; do \
   141  		ARCH="osx-amd64"; \
   142  		cp tmpprepackaged/$$plugin_package-$$ARCH.tar.gz $(DIST_PATH)/prepackaged_plugins; \
   143  		cp tmpprepackaged/$$plugin_package-$$ARCH.tar.gz.sig $(DIST_PATH)/prepackaged_plugins; \
   144  		HAS_ARCH=`tar -tf $(DIST_PATH)/prepackaged_plugins/$$plugin_package-$$ARCH.tar.gz | grep -oE "dist/plugin-.*"`; \
   145  		if [ "$$HAS_ARCH" != "dist/plugin-darwin-amd64" ]; then \
   146  			echo "Contains $$HAS_ARCH in $$plugin_package-$$ARCH.tar.gz but needs dist/plugin-darwin-amd64"; \
   147  			exit 1; \
   148  		fi; \
   149  		gpg --verify $(DIST_PATH)/prepackaged_plugins/$$plugin_package-$$ARCH.tar.gz.sig $(DIST_PATH)/prepackaged_plugins/$$plugin_package-$$ARCH.tar.gz; \
   150  		if [ $$? -ne 0 ]; then \
   151  			echo "Failed to verify $$plugin_package-$$ARCH.tar.gz|$$plugin_package-$$ARCH.tar.gz.sig"; \
   152  			exit 1; \
   153  		fi; \
   154  	done
   155  	@# Package
   156  	tar -C dist -czf $(DIST_PATH)-$(BUILD_TYPE_NAME)-osx-amd64.tar.gz hkserver
   157  	@# Cleanup
   158  	rm -f $(DIST_PATH)/bin/hkserver
   159  	rm -f $(DIST_PATH)/bin/platform
   160  	rm -f $(DIST_PATH)/bin/mmctl
   161  	rm -f $(DIST_PATH)/prepackaged_plugins/*
   162  
   163  	@# Make windows package
   164  	@# Copy binary
   165  ifeq ($(BUILDER_GOOS_GOARCH),"windows_amd64")
   166  	cp $(GOBIN)/hkserver.exe $(DIST_PATH)/bin # from native bin dir, not cross-compiled
   167  else
   168  	cp $(GOBIN)/windows_amd64/hkserver.exe $(DIST_PATH)/bin # from cross-compiled bin dir
   169  endif
   170  	#Download MMCTL for Windows
   171  	scripts/download_mmctl_release.sh "Windows" $(DIST_PATH)/bin
   172  	@# Prepackage plugins
   173  	@for plugin_package in $(PLUGIN_PACKAGES) ; do \
   174  		ARCH="windows-amd64"; \
   175  		cp tmpprepackaged/$$plugin_package-$$ARCH.tar.gz $(DIST_PATH)/prepackaged_plugins; \
   176  		cp tmpprepackaged/$$plugin_package-$$ARCH.tar.gz.sig $(DIST_PATH)/prepackaged_plugins; \
   177  		HAS_ARCH=`tar -tf $(DIST_PATH)/prepackaged_plugins/$$plugin_package-$$ARCH.tar.gz | grep -oE "dist/plugin-.*"`; \
   178  		if [ "$$HAS_ARCH" != "dist/plugin-windows-amd64.exe" ]; then \
   179  			echo "Contains $$HAS_ARCH in $$plugin_package-$$ARCH.tar.gz but needs dist/plugin-windows-amd64.exe"; \
   180  			exit 1; \
   181  		fi; \
   182  		gpg --verify $(DIST_PATH)/prepackaged_plugins/$$plugin_package-$$ARCH.tar.gz.sig $(DIST_PATH)/prepackaged_plugins/$$plugin_package-$$ARCH.tar.gz; \
   183  		if [ $$? -ne 0 ]; then \
   184  			echo "Failed to verify $$plugin_package-$$ARCH.tar.gz|$$plugin_package-$$ARCH.tar.gz.sig"; \
   185  			exit 1; \
   186  		fi; \
   187  	done
   188  	@# Package
   189  	cd $(DIST_ROOT) && zip -9 -r -q -l hkserver-$(BUILD_TYPE_NAME)-windows-amd64.zip hkserver && cd ..
   190  	@# Cleanup
   191  	rm -f $(DIST_PATH)/bin/hkserver.exe
   192  	rm -f $(DIST_PATH)/bin/platform.exe
   193  	rm -f $(DIST_PATH)/bin/mmctl.exe
   194  	rm -f $(DIST_PATH)/prepackaged_plugins/*
   195  
   196  	@# Make linux package
   197  	@# Copy binary
   198  ifeq ($(BUILDER_GOOS_GOARCH),"linux_amd64")
   199  	cp $(GOBIN)/hkserver $(DIST_PATH)/bin # from native bin dir, not cross-compiled
   200  else
   201  	cp $(GOBIN)/linux_amd64/hkserver $(DIST_PATH)/bin # from cross-compiled bin dir
   202  endif
   203  	#Download MMCTL for Linux
   204  	scripts/download_mmctl_release.sh "Linux" $(DIST_PATH)/bin
   205  	@# Prepackage plugins
   206  	@for plugin_package in $(PLUGIN_PACKAGES) ; do \
   207  		ARCH="linux-amd64"; \
   208  		cp tmpprepackaged/$$plugin_package-$$ARCH.tar.gz $(DIST_PATH)/prepackaged_plugins; \
   209  		cp tmpprepackaged/$$plugin_package-$$ARCH.tar.gz.sig $(DIST_PATH)/prepackaged_plugins; \
   210  		HAS_ARCH=`tar -tf $(DIST_PATH)/prepackaged_plugins/$$plugin_package-$$ARCH.tar.gz | grep -oE "dist/plugin-.*"`; \
   211  		if [ "$$HAS_ARCH" != "dist/plugin-linux-amd64" ]; then \
   212  			echo "Contains $$HAS_ARCH in $$plugin_package-$$ARCH.tar.gz but needs dist/plugin-linux-amd64"; \
   213  			exit 1; \
   214  		fi; \
   215  		gpg --verify $(DIST_PATH)/prepackaged_plugins/$$plugin_package-$$ARCH.tar.gz.sig $(DIST_PATH)/prepackaged_plugins/$$plugin_package-$$ARCH.tar.gz; \
   216  		if [ $$? -ne 0 ]; then \
   217  			echo "Failed to verify $$plugin_package-$$ARCH.tar.gz|$$plugin_package-$$ARCH.tar.gz.sig"; \
   218  			exit 1; \
   219  		fi; \
   220  	done
   221  	@# Package
   222  	tar -C dist -czf $(DIST_PATH)-$(BUILD_TYPE_NAME)-linux-amd64.tar.gz hkserver
   223  	@# Don't clean up native package so dev machines will have an unzipped package available
   224  	@#rm -f $(DIST_PATH)/bin/hkserver
   225  
   226  	rm -rf tmpprepackaged
   227  	rm -rf dist/hkserver