github.com/adacta-ru/mattermost-server/v5@v5.31.1/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