github.com/haalcala/mattermost-server-change-repo/v5@v5.33.2/build/release.mk (about) 1 dist: | check-style test package 2 3 build-linux: 4 @echo Build Linux amd64 5 ifeq ($(BUILDER_GOOS_GOARCH),"linux_amd64") 6 env GOOS=linux GOARCH=amd64 $(GO) build -o $(GOBIN) $(GOFLAGS) -trimpath -ldflags '$(LDFLAGS)' ./... 7 else 8 mkdir -p $(GOBIN)/linux_amd64 9 env GOOS=linux GOARCH=amd64 $(GO) build -o $(GOBIN)/linux_amd64 $(GOFLAGS) -trimpath -ldflags '$(LDFLAGS)' ./... 10 endif 11 12 build-osx: 13 @echo Build OSX amd64 14 ifeq ($(BUILDER_GOOS_GOARCH),"darwin_amd64") 15 env GOOS=darwin GOARCH=amd64 $(GO) build -o $(GOBIN) $(GOFLAGS) -trimpath -ldflags '$(LDFLAGS)' ./... 16 else 17 mkdir -p $(GOBIN)/darwin_amd64 18 env GOOS=darwin GOARCH=amd64 $(GO) build -o $(GOBIN)/darwin_amd64 $(GOFLAGS) -trimpath -ldflags '$(LDFLAGS)' ./... 19 endif 20 21 build-windows: 22 @echo Build Windows amd64 23 ifeq ($(BUILDER_GOOS_GOARCH),"windows_amd64") 24 env GOOS=windows GOARCH=amd64 $(GO) build -o $(GOBIN) $(GOFLAGS) -trimpath -ldflags '$(LDFLAGS)' ./... 25 else 26 mkdir -p $(GOBIN)/windows_amd64 27 env GOOS=windows GOARCH=amd64 $(GO) build -o $(GOBIN)/windows_amd64 $(GOFLAGS) -trimpath -ldflags '$(LDFLAGS)' ./... 28 endif 29 30 build-cmd-linux: 31 @echo Build Linux amd64 32 ifeq ($(BUILDER_GOOS_GOARCH),"linux_amd64") 33 env GOOS=linux GOARCH=amd64 $(GO) build -o $(GOBIN) $(GOFLAGS) -trimpath -ldflags '$(LDFLAGS)' ./cmd/... 34 else 35 mkdir -p $(GOBIN)/linux_amd64 36 env GOOS=linux GOARCH=amd64 $(GO) build -o $(GOBIN)/linux_amd64 $(GOFLAGS) -trimpath -ldflags '$(LDFLAGS)' ./cmd/... 37 endif 38 39 build-cmd-osx: 40 @echo Build OSX amd64 41 ifeq ($(BUILDER_GOOS_GOARCH),"darwin_amd64") 42 env GOOS=darwin GOARCH=amd64 $(GO) build -o $(GOBIN) $(GOFLAGS) -trimpath -ldflags '$(LDFLAGS)' ./cmd/... 43 else 44 mkdir -p $(GOBIN)/darwin_amd64 45 env GOOS=darwin GOARCH=amd64 $(GO) build -o $(GOBIN)/darwin_amd64 $(GOFLAGS) -trimpath -ldflags '$(LDFLAGS)' ./cmd/... 46 endif 47 48 build-cmd-windows: 49 @echo Build Windows amd64 50 ifeq ($(BUILDER_GOOS_GOARCH),"windows_amd64") 51 env GOOS=windows GOARCH=amd64 $(GO) build -o $(GOBIN) $(GOFLAGS) -trimpath -ldflags '$(LDFLAGS)' ./cmd/... 52 else 53 mkdir -p $(GOBIN)/windows_amd64 54 env GOOS=windows GOARCH=amd64 $(GO) build -o $(GOBIN)/windows_amd64 $(GOFLAGS) -trimpath -ldflags '$(LDFLAGS)' ./cmd/... 55 endif 56 57 build: build-linux build-windows build-osx 58 59 build-cmd: build-cmd-linux build-cmd-windows build-cmd-osx 60 61 build-client: 62 @echo Building mattermost web app 63 64 cd $(BUILD_WEBAPP_DIR) && $(MAKE) build 65 66 package: 67 @ echo Packaging mattermost 68 @# Remove any old files 69 rm -Rf $(DIST_ROOT) 70 71 @# Create needed directories 72 mkdir -p $(DIST_PATH)/bin 73 mkdir -p $(DIST_PATH)/logs 74 mkdir -p $(DIST_PATH)/prepackaged_plugins 75 76 @# Resource directories 77 mkdir -p $(DIST_PATH)/config 78 cp -L config/README.md $(DIST_PATH)/config 79 OUTPUT_CONFIG=$(PWD)/$(DIST_PATH)/config/config.json go generate ./config 80 cp -RL fonts $(DIST_PATH) 81 cp -RL templates $(DIST_PATH) 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 Mattermost 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.mattermost.com/release/$$plugin_package-$$ARCH.tar.gz; \ 123 curl -f -O -L https://plugins-store.test.mattermost.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)/mattermost $(DIST_PATH)/bin # from native bin dir, not cross-compiled 134 cp $(GOBIN)/platform $(DIST_PATH)/bin # from native bin dir, not cross-compiled 135 else 136 cp $(GOBIN)/darwin_amd64/mattermost $(DIST_PATH)/bin # from cross-compiled bin dir 137 cp $(GOBIN)/darwin_amd64/platform $(DIST_PATH)/bin # from cross-compiled bin dir 138 endif 139 #Download MMCTL for OSX 140 scripts/download_mmctl_release.sh "Darwin" $(DIST_PATH)/bin 141 @# Prepackage plugins 142 @for plugin_package in $(PLUGIN_PACKAGES) ; do \ 143 ARCH="osx-amd64"; \ 144 cp tmpprepackaged/$$plugin_package-$$ARCH.tar.gz $(DIST_PATH)/prepackaged_plugins; \ 145 cp tmpprepackaged/$$plugin_package-$$ARCH.tar.gz.sig $(DIST_PATH)/prepackaged_plugins; \ 146 HAS_ARCH=`tar -tf $(DIST_PATH)/prepackaged_plugins/$$plugin_package-$$ARCH.tar.gz | grep -oE "dist/plugin-.*"`; \ 147 if [ "$$HAS_ARCH" != "dist/plugin-darwin-amd64" ]; then \ 148 echo "Contains $$HAS_ARCH in $$plugin_package-$$ARCH.tar.gz but needs dist/plugin-darwin-amd64"; \ 149 exit 1; \ 150 fi; \ 151 gpg --verify $(DIST_PATH)/prepackaged_plugins/$$plugin_package-$$ARCH.tar.gz.sig $(DIST_PATH)/prepackaged_plugins/$$plugin_package-$$ARCH.tar.gz; \ 152 if [ $$? -ne 0 ]; then \ 153 echo "Failed to verify $$plugin_package-$$ARCH.tar.gz|$$plugin_package-$$ARCH.tar.gz.sig"; \ 154 exit 1; \ 155 fi; \ 156 done 157 @# Package 158 tar -C dist -czf $(DIST_PATH)-$(BUILD_TYPE_NAME)-osx-amd64.tar.gz mattermost 159 @# Cleanup 160 rm -f $(DIST_PATH)/bin/mattermost 161 rm -f $(DIST_PATH)/bin/platform 162 rm -f $(DIST_PATH)/bin/mmctl 163 rm -f $(DIST_PATH)/prepackaged_plugins/* 164 165 @# Make windows package 166 @# Copy binary 167 ifeq ($(BUILDER_GOOS_GOARCH),"windows_amd64") 168 cp $(GOBIN)/mattermost.exe $(DIST_PATH)/bin # from native bin dir, not cross-compiled 169 cp $(GOBIN)/platform.exe $(DIST_PATH)/bin # from native bin dir, not cross-compiled 170 else 171 cp $(GOBIN)/windows_amd64/mattermost.exe $(DIST_PATH)/bin # from cross-compiled bin dir 172 cp $(GOBIN)/windows_amd64/platform.exe $(DIST_PATH)/bin # from cross-compiled bin dir 173 endif 174 #Download MMCTL for Windows 175 scripts/download_mmctl_release.sh "Windows" $(DIST_PATH)/bin 176 @# Prepackage plugins 177 @for plugin_package in $(PLUGIN_PACKAGES) ; do \ 178 ARCH="windows-amd64"; \ 179 cp tmpprepackaged/$$plugin_package-$$ARCH.tar.gz $(DIST_PATH)/prepackaged_plugins; \ 180 cp tmpprepackaged/$$plugin_package-$$ARCH.tar.gz.sig $(DIST_PATH)/prepackaged_plugins; \ 181 HAS_ARCH=`tar -tf $(DIST_PATH)/prepackaged_plugins/$$plugin_package-$$ARCH.tar.gz | grep -oE "dist/plugin-.*"`; \ 182 if [ "$$HAS_ARCH" != "dist/plugin-windows-amd64.exe" ]; then \ 183 echo "Contains $$HAS_ARCH in $$plugin_package-$$ARCH.tar.gz but needs dist/plugin-windows-amd64.exe"; \ 184 exit 1; \ 185 fi; \ 186 gpg --verify $(DIST_PATH)/prepackaged_plugins/$$plugin_package-$$ARCH.tar.gz.sig $(DIST_PATH)/prepackaged_plugins/$$plugin_package-$$ARCH.tar.gz; \ 187 if [ $$? -ne 0 ]; then \ 188 echo "Failed to verify $$plugin_package-$$ARCH.tar.gz|$$plugin_package-$$ARCH.tar.gz.sig"; \ 189 exit 1; \ 190 fi; \ 191 done 192 @# Package 193 cd $(DIST_ROOT) && zip -9 -r -q -l mattermost-$(BUILD_TYPE_NAME)-windows-amd64.zip mattermost && cd .. 194 @# Cleanup 195 rm -f $(DIST_PATH)/bin/mattermost.exe 196 rm -f $(DIST_PATH)/bin/platform.exe 197 rm -f $(DIST_PATH)/bin/mmctl.exe 198 rm -f $(DIST_PATH)/prepackaged_plugins/* 199 200 @# Make linux package 201 @# Copy binary 202 ifeq ($(BUILDER_GOOS_GOARCH),"linux_amd64") 203 cp $(GOBIN)/mattermost $(DIST_PATH)/bin # from native bin dir, not cross-compiled 204 cp $(GOBIN)/platform $(DIST_PATH)/bin # from native bin dir, not cross-compiled 205 else 206 cp $(GOBIN)/linux_amd64/mattermost $(DIST_PATH)/bin # from cross-compiled bin dir 207 cp $(GOBIN)/linux_amd64/platform $(DIST_PATH)/bin # from cross-compiled bin dir 208 endif 209 #Download MMCTL for Linux 210 scripts/download_mmctl_release.sh "Linux" $(DIST_PATH)/bin 211 @# Prepackage plugins 212 @for plugin_package in $(PLUGIN_PACKAGES) ; do \ 213 ARCH="linux-amd64"; \ 214 cp tmpprepackaged/$$plugin_package-$$ARCH.tar.gz $(DIST_PATH)/prepackaged_plugins; \ 215 cp tmpprepackaged/$$plugin_package-$$ARCH.tar.gz.sig $(DIST_PATH)/prepackaged_plugins; \ 216 HAS_ARCH=`tar -tf $(DIST_PATH)/prepackaged_plugins/$$plugin_package-$$ARCH.tar.gz | grep -oE "dist/plugin-.*"`; \ 217 if [ "$$HAS_ARCH" != "dist/plugin-linux-amd64" ]; then \ 218 echo "Contains $$HAS_ARCH in $$plugin_package-$$ARCH.tar.gz but needs dist/plugin-linux-amd64"; \ 219 exit 1; \ 220 fi; \ 221 gpg --verify $(DIST_PATH)/prepackaged_plugins/$$plugin_package-$$ARCH.tar.gz.sig $(DIST_PATH)/prepackaged_plugins/$$plugin_package-$$ARCH.tar.gz; \ 222 if [ $$? -ne 0 ]; then \ 223 echo "Failed to verify $$plugin_package-$$ARCH.tar.gz|$$plugin_package-$$ARCH.tar.gz.sig"; \ 224 exit 1; \ 225 fi; \ 226 done 227 @# Package 228 tar -C dist -czf $(DIST_PATH)-$(BUILD_TYPE_NAME)-linux-amd64.tar.gz mattermost 229 @# Don't clean up native package so dev machines will have an unzipped package available 230 @#rm -f $(DIST_PATH)/bin/mattermost 231 232 rm -rf tmpprepackaged