mirror of
https://github.com/mattermost/mattermost.git
synced 2025-02-25 18:55:24 -06:00
* MM-27512: Use an authenticated user to bump up request rate limit An unauthenticated user can only make 60 requests per hour which means 1 request every minute. This can lead to frequent rate limit errors while getting the latest release. We change that to use an authenticated user which is already available in the CI. This moves us to make 5000 requests per hour. We also add additional logging in the Makefile targets in case the command fails again so that it's clear what has happened, and not return cryptic 404 errors again. Ideally, we should be able to inspect the output of the curl command, but since the output value of the entire bash script is fed into the variable, it is a bit difficult to print debug output. If this still gives error, then we need to either use a cached artifact somehow or add additional logging and add a retry logic on top of it. * fix mistake
228 lines
9.7 KiB
Makefile
228 lines
9.7 KiB
Makefile
|
|
dist: | check-style test package
|
|
|
|
build-linux:
|
|
@echo Build Linux amd64
|
|
ifeq ($(BUILDER_GOOS_GOARCH),"linux_amd64")
|
|
env GOOS=linux GOARCH=amd64 $(GO) build -o $(GOBIN) $(GOFLAGS) -trimpath -ldflags '$(LDFLAGS)' ./...
|
|
else
|
|
mkdir -p $(GOBIN)/linux_amd64
|
|
env GOOS=linux GOARCH=amd64 $(GO) build -o $(GOBIN)/linux_amd64 $(GOFLAGS) -trimpath -ldflags '$(LDFLAGS)' ./...
|
|
endif
|
|
|
|
build-osx:
|
|
@echo Build OSX amd64
|
|
ifeq ($(BUILDER_GOOS_GOARCH),"darwin_amd64")
|
|
env GOOS=darwin GOARCH=amd64 $(GO) build -o $(GOBIN) $(GOFLAGS) -trimpath -ldflags '$(LDFLAGS)' ./...
|
|
else
|
|
mkdir -p $(GOBIN)/darwin_amd64
|
|
env GOOS=darwin GOARCH=amd64 $(GO) build -o $(GOBIN)/darwin_amd64 $(GOFLAGS) -trimpath -ldflags '$(LDFLAGS)' ./...
|
|
endif
|
|
|
|
build-windows:
|
|
@echo Build Windows amd64
|
|
ifeq ($(BUILDER_GOOS_GOARCH),"windows_amd64")
|
|
env GOOS=windows GOARCH=amd64 $(GO) build -o $(GOBIN) $(GOFLAGS) -trimpath -ldflags '$(LDFLAGS)' ./...
|
|
else
|
|
mkdir -p $(GOBIN)/windows_amd64
|
|
env GOOS=windows GOARCH=amd64 $(GO) build -o $(GOBIN)/windows_amd64 $(GOFLAGS) -trimpath -ldflags '$(LDFLAGS)' ./...
|
|
endif
|
|
|
|
build-cmd-linux:
|
|
@echo Build Linux amd64
|
|
ifeq ($(BUILDER_GOOS_GOARCH),"linux_amd64")
|
|
env GOOS=linux GOARCH=amd64 $(GO) build -o $(GOBIN) $(GOFLAGS) -trimpath -ldflags '$(LDFLAGS)' ./cmd/...
|
|
else
|
|
mkdir -p $(GOBIN)/linux_amd64
|
|
env GOOS=linux GOARCH=amd64 $(GO) build -o $(GOBIN)/linux_amd64 $(GOFLAGS) -trimpath -ldflags '$(LDFLAGS)' ./cmd/...
|
|
endif
|
|
|
|
build-cmd-osx:
|
|
@echo Build OSX amd64
|
|
ifeq ($(BUILDER_GOOS_GOARCH),"darwin_amd64")
|
|
env GOOS=darwin GOARCH=amd64 $(GO) build -o $(GOBIN) $(GOFLAGS) -trimpath -ldflags '$(LDFLAGS)' ./cmd/...
|
|
else
|
|
mkdir -p $(GOBIN)/darwin_amd64
|
|
env GOOS=darwin GOARCH=amd64 $(GO) build -o $(GOBIN)/darwin_amd64 $(GOFLAGS) -trimpath -ldflags '$(LDFLAGS)' ./cmd/...
|
|
endif
|
|
|
|
build-cmd-windows:
|
|
@echo Build Windows amd64
|
|
ifeq ($(BUILDER_GOOS_GOARCH),"windows_amd64")
|
|
env GOOS=windows GOARCH=amd64 $(GO) build -o $(GOBIN) $(GOFLAGS) -trimpath -ldflags '$(LDFLAGS)' ./cmd/...
|
|
else
|
|
mkdir -p $(GOBIN)/windows_amd64
|
|
env GOOS=windows GOARCH=amd64 $(GO) build -o $(GOBIN)/windows_amd64 $(GOFLAGS) -trimpath -ldflags '$(LDFLAGS)' ./cmd/...
|
|
endif
|
|
|
|
build: build-linux build-windows build-osx
|
|
|
|
build-cmd: build-cmd-linux build-cmd-windows build-cmd-osx
|
|
|
|
build-client:
|
|
@echo Building mattermost web app
|
|
|
|
cd $(BUILD_WEBAPP_DIR) && $(MAKE) build
|
|
|
|
package:
|
|
@ echo Packaging mattermost
|
|
ifeq ($(MMCTL_REL_TO_DOWNLOAD),)
|
|
@echo "An error has occured trying to get the latest mmctl release. Aborting. Perhaps api.github.com is down?"
|
|
@exit 1
|
|
endif
|
|
@# Remove any old files
|
|
rm -Rf $(DIST_ROOT)
|
|
|
|
@# Create needed directories
|
|
mkdir -p $(DIST_PATH)/bin
|
|
mkdir -p $(DIST_PATH)/logs
|
|
mkdir -p $(DIST_PATH)/prepackaged_plugins
|
|
|
|
@# Resource directories
|
|
mkdir -p $(DIST_PATH)/config
|
|
cp -L config/README.md $(DIST_PATH)/config
|
|
OUTPUT_CONFIG=$(PWD)/$(DIST_PATH)/config/config.json go generate ./config
|
|
cp -RL fonts $(DIST_PATH)
|
|
cp -RL templates $(DIST_PATH)
|
|
cp -RL i18n $(DIST_PATH)
|
|
|
|
@# Disable developer settings
|
|
sed -i'' -e 's|"ConsoleLevel": "DEBUG"|"ConsoleLevel": "INFO"|g' $(DIST_PATH)/config/config.json
|
|
sed -i'' -e 's|"SiteURL": "http://localhost:8065"|"SiteURL": ""|g' $(DIST_PATH)/config/config.json
|
|
|
|
@# Reset email sending to original configuration
|
|
sed -i'' -e 's|"SendEmailNotifications": true,|"SendEmailNotifications": false,|g' $(DIST_PATH)/config/config.json
|
|
sed -i'' -e 's|"FeedbackEmail": "test@example.com",|"FeedbackEmail": "",|g' $(DIST_PATH)/config/config.json
|
|
sed -i'' -e 's|"ReplyToAddress": "test@example.com",|"ReplyToAddress": "",|g' $(DIST_PATH)/config/config.json
|
|
sed -i'' -e 's|"SMTPServer": "localhost",|"SMTPServer": "",|g' $(DIST_PATH)/config/config.json
|
|
sed -i'' -e 's|"SMTPPort": "2500",|"SMTPPort": "",|g' $(DIST_PATH)/config/config.json
|
|
|
|
@# Package webapp
|
|
mkdir -p $(DIST_PATH)/client
|
|
cp -RL $(BUILD_WEBAPP_DIR)/dist/* $(DIST_PATH)/client
|
|
|
|
@# Help files
|
|
ifeq ($(BUILD_ENTERPRISE_READY),true)
|
|
cp $(BUILD_ENTERPRISE_DIR)/ENTERPRISE-EDITION-LICENSE.txt $(DIST_PATH)
|
|
else
|
|
cp build/MIT-COMPILED-LICENSE.md $(DIST_PATH)
|
|
endif
|
|
cp NOTICE.txt $(DIST_PATH)
|
|
cp README.md $(DIST_PATH)
|
|
|
|
@# Import Mattermost plugin public key
|
|
gpg --import build/plugin-production-public-key.gpg
|
|
|
|
@# Download prepackaged plugins
|
|
mkdir -p tmpprepackaged
|
|
@cd tmpprepackaged && for plugin_package in $(PLUGIN_PACKAGES) ; do \
|
|
for ARCH in "osx-amd64" "windows-amd64" "linux-amd64" ; do \
|
|
curl -f -O -L https://plugins-store.test.mattermost.com/release/$$plugin_package-$$ARCH.tar.gz; \
|
|
curl -f -O -L https://plugins-store.test.mattermost.com/release/$$plugin_package-$$ARCH.tar.gz.sig; \
|
|
done; \
|
|
done
|
|
|
|
|
|
@# ----- PLATFORM SPECIFIC -----
|
|
|
|
@# Make osx package
|
|
@# Copy binary
|
|
ifeq ($(BUILDER_GOOS_GOARCH),"darwin_amd64")
|
|
cp $(GOBIN)/mattermost $(DIST_PATH)/bin # from native bin dir, not cross-compiled
|
|
cp $(GOBIN)/platform $(DIST_PATH)/bin # from native bin dir, not cross-compiled
|
|
else
|
|
cp $(GOBIN)/darwin_amd64/mattermost $(DIST_PATH)/bin # from cross-compiled bin dir
|
|
cp $(GOBIN)/darwin_amd64/platform $(DIST_PATH)/bin # from cross-compiled bin dir
|
|
endif
|
|
MMCTL_FILE="darwin_amd64.tar" && curl -f -O -L https://github.com/mattermost/mmctl/releases/download/$(MMCTL_REL_TO_DOWNLOAD)/$$MMCTL_FILE && tar -xvf $$MMCTL_FILE -C $(DIST_PATH)/bin && rm $$MMCTL_FILE
|
|
@# Prepackage plugins
|
|
@for plugin_package in $(PLUGIN_PACKAGES) ; do \
|
|
ARCH="osx-amd64"; \
|
|
cp tmpprepackaged/$$plugin_package-$$ARCH.tar.gz $(DIST_PATH)/prepackaged_plugins; \
|
|
cp tmpprepackaged/$$plugin_package-$$ARCH.tar.gz.sig $(DIST_PATH)/prepackaged_plugins; \
|
|
HAS_ARCH=`tar -tf $(DIST_PATH)/prepackaged_plugins/$$plugin_package-$$ARCH.tar.gz | grep -oE "dist/plugin-.*"`; \
|
|
if [ "$$HAS_ARCH" != "dist/plugin-darwin-amd64" ]; then \
|
|
echo "Contains $$HAS_ARCH in $$plugin_package-$$ARCH.tar.gz but needs dist/plugin-darwin-amd64"; \
|
|
exit 1; \
|
|
fi; \
|
|
gpg --verify $(DIST_PATH)/prepackaged_plugins/$$plugin_package-$$ARCH.tar.gz.sig $(DIST_PATH)/prepackaged_plugins/$$plugin_package-$$ARCH.tar.gz; \
|
|
if [ $$? -ne 0 ]; then \
|
|
echo "Failed to verify $$plugin_package-$$ARCH.tar.gz|$$plugin_package-$$ARCH.tar.gz.sig"; \
|
|
exit 1; \
|
|
fi; \
|
|
done
|
|
@# Package
|
|
tar -C dist -czf $(DIST_PATH)-$(BUILD_TYPE_NAME)-osx-amd64.tar.gz mattermost
|
|
@# Cleanup
|
|
rm -f $(DIST_PATH)/bin/mattermost
|
|
rm -f $(DIST_PATH)/bin/platform
|
|
rm -f $(DIST_PATH)/bin/mmctl
|
|
rm -f $(DIST_PATH)/prepackaged_plugins/*
|
|
|
|
@# Make windows package
|
|
@# Copy binary
|
|
ifeq ($(BUILDER_GOOS_GOARCH),"windows_amd64")
|
|
cp $(GOBIN)/mattermost.exe $(DIST_PATH)/bin # from native bin dir, not cross-compiled
|
|
cp $(GOBIN)/platform.exe $(DIST_PATH)/bin # from native bin dir, not cross-compiled
|
|
else
|
|
cp $(GOBIN)/windows_amd64/mattermost.exe $(DIST_PATH)/bin # from cross-compiled bin dir
|
|
cp $(GOBIN)/windows_amd64/platform.exe $(DIST_PATH)/bin # from cross-compiled bin dir
|
|
endif
|
|
MMCTL_FILE="windows_amd64.zip" && curl -f -O -L https://github.com/mattermost/mmctl/releases/download/$(MMCTL_REL_TO_DOWNLOAD)/$$MMCTL_FILE && unzip -o $$MMCTL_FILE -d $(DIST_PATH)/bin && rm $$MMCTL_FILE
|
|
@# Prepackage plugins
|
|
@for plugin_package in $(PLUGIN_PACKAGES) ; do \
|
|
ARCH="windows-amd64"; \
|
|
cp tmpprepackaged/$$plugin_package-$$ARCH.tar.gz $(DIST_PATH)/prepackaged_plugins; \
|
|
cp tmpprepackaged/$$plugin_package-$$ARCH.tar.gz.sig $(DIST_PATH)/prepackaged_plugins; \
|
|
HAS_ARCH=`tar -tf $(DIST_PATH)/prepackaged_plugins/$$plugin_package-$$ARCH.tar.gz | grep -oE "dist/plugin-.*"`; \
|
|
if [ "$$HAS_ARCH" != "dist/plugin-windows-amd64.exe" ]; then \
|
|
echo "Contains $$HAS_ARCH in $$plugin_package-$$ARCH.tar.gz but needs dist/plugin-windows-amd64.exe"; \
|
|
exit 1; \
|
|
fi; \
|
|
gpg --verify $(DIST_PATH)/prepackaged_plugins/$$plugin_package-$$ARCH.tar.gz.sig $(DIST_PATH)/prepackaged_plugins/$$plugin_package-$$ARCH.tar.gz; \
|
|
if [ $$? -ne 0 ]; then \
|
|
echo "Failed to verify $$plugin_package-$$ARCH.tar.gz|$$plugin_package-$$ARCH.tar.gz.sig"; \
|
|
exit 1; \
|
|
fi; \
|
|
done
|
|
@# Package
|
|
cd $(DIST_ROOT) && zip -9 -r -q -l mattermost-$(BUILD_TYPE_NAME)-windows-amd64.zip mattermost && cd ..
|
|
@# Cleanup
|
|
rm -f $(DIST_PATH)/bin/mattermost.exe
|
|
rm -f $(DIST_PATH)/bin/platform.exe
|
|
rm -f $(DIST_PATH)/bin/mmctl.exe
|
|
rm -f $(DIST_PATH)/prepackaged_plugins/*
|
|
|
|
@# Make linux package
|
|
@# Copy binary
|
|
ifeq ($(BUILDER_GOOS_GOARCH),"linux_amd64")
|
|
cp $(GOBIN)/mattermost $(DIST_PATH)/bin # from native bin dir, not cross-compiled
|
|
cp $(GOBIN)/platform $(DIST_PATH)/bin # from native bin dir, not cross-compiled
|
|
else
|
|
cp $(GOBIN)/linux_amd64/mattermost $(DIST_PATH)/bin # from cross-compiled bin dir
|
|
cp $(GOBIN)/linux_amd64/platform $(DIST_PATH)/bin # from cross-compiled bin dir
|
|
endif
|
|
MMCTL_FILE="linux_amd64.tar" && curl -f -O -L https://github.com/mattermost/mmctl/releases/download/$(MMCTL_REL_TO_DOWNLOAD)/$$MMCTL_FILE && tar -xvf $$MMCTL_FILE -C $(DIST_PATH)/bin && rm $$MMCTL_FILE
|
|
@# Prepackage plugins
|
|
@for plugin_package in $(PLUGIN_PACKAGES) ; do \
|
|
ARCH="linux-amd64"; \
|
|
cp tmpprepackaged/$$plugin_package-$$ARCH.tar.gz $(DIST_PATH)/prepackaged_plugins; \
|
|
cp tmpprepackaged/$$plugin_package-$$ARCH.tar.gz.sig $(DIST_PATH)/prepackaged_plugins; \
|
|
HAS_ARCH=`tar -tf $(DIST_PATH)/prepackaged_plugins/$$plugin_package-$$ARCH.tar.gz | grep -oE "dist/plugin-.*"`; \
|
|
if [ "$$HAS_ARCH" != "dist/plugin-linux-amd64" ]; then \
|
|
echo "Contains $$HAS_ARCH in $$plugin_package-$$ARCH.tar.gz but needs dist/plugin-linux-amd64"; \
|
|
exit 1; \
|
|
fi; \
|
|
gpg --verify $(DIST_PATH)/prepackaged_plugins/$$plugin_package-$$ARCH.tar.gz.sig $(DIST_PATH)/prepackaged_plugins/$$plugin_package-$$ARCH.tar.gz; \
|
|
if [ $$? -ne 0 ]; then \
|
|
echo "Failed to verify $$plugin_package-$$ARCH.tar.gz|$$plugin_package-$$ARCH.tar.gz.sig"; \
|
|
exit 1; \
|
|
fi; \
|
|
done
|
|
@# Package
|
|
tar -C dist -czf $(DIST_PATH)-$(BUILD_TYPE_NAME)-linux-amd64.tar.gz mattermost
|
|
@# Don't clean up native package so dev machines will have an unzipped package available
|
|
@#rm -f $(DIST_PATH)/bin/mattermost
|
|
|
|
rm -rf tmpprepackaged
|