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