Includes mmctl into the mono-repo (#23091)
* Includes mmctl into the mono-repo * Update to use the new public module paths * Adds docs check to the mmctl CI * Fix public utils import path * Tidy up modules * Fix linter * Update CI tasks to use the new file structure * Update CI references
Этот коммит содержится в:
коммит произвёл
GitHub
родитель
412109b02e
Коммит
951456c780
@@ -1,4 +1,4 @@
|
||||
.PHONY: build package run stop run-client run-server run-haserver stop-haserver stop-client stop-server restart restart-server restart-client restart-haserver start-docker update-docker clean-dist clean nuke check-style check-client-style check-server-style check-unit-tests test dist run-client-tests setup-run-client-tests cleanup-run-client-tests test-client build-linux build-osx build-windows package-prep package-linux package-osx package-windows internal-test-web-client vet run-server-for-web-client-tests diff-config prepackaged-plugins prepackaged-binaries test-server test-server-ee test-server-quick test-server-race new-migration migrations-extract
|
||||
.PHONY: build package run stop run-client run-server run-haserver stop-haserver stop-client stop-server restart restart-server restart-client restart-haserver start-docker update-docker clean-dist clean nuke check-style check-client-style check-server-style check-unit-tests test dist run-client-tests setup-run-client-tests cleanup-run-client-tests test-client build-linux build-osx build-windows package-prep package-linux package-osx package-windows internal-test-web-client vet run-server-for-web-client-tests diff-config prepackaged-plugins prepackaged-binaries test-server test-server-ee test-server-quick test-server-race test-mmctl-unit test-mmctl-e2e test-mmctl test-mmctl-coverage mmctl-build mmctl-docs new-migration migrations-extract
|
||||
|
||||
ROOT := $(dir $(abspath $(lastword $(MAKEFILE_LIST))))
|
||||
|
||||
@@ -34,6 +34,13 @@ BUILD_NUMBER ?= $(BUILD_NUMBER:)
|
||||
BUILD_DATE = $(shell date -u)
|
||||
BUILD_HASH = $(shell git rev-parse HEAD)
|
||||
|
||||
# treestate
|
||||
GIT_TREESTATE = clean
|
||||
DIFF = $(shell git diff --quiet >/dev/null 2>&1; if [ $$? -eq 1 ]; then echo "1"; fi)
|
||||
ifeq ($(DIFF), 1)
|
||||
GIT_TREESTATE = dirty
|
||||
endif
|
||||
|
||||
# Go tags
|
||||
GOTAGS ?= $(GOTAGS:)
|
||||
|
||||
@@ -51,6 +58,15 @@ ifeq ($(BUILD_NUMBER),dev)
|
||||
GOTAGS += "testlicensekey"
|
||||
endif
|
||||
|
||||
# mmctl
|
||||
MM_SERVER_PATH ?= $(PWD)
|
||||
MMCTL_BUILD_TAGS =
|
||||
MMCTL_TESTFLAGS = -timeout 30m -race -v
|
||||
MMCTL_PKG = github.com/mattermost/mattermost-server/server/v8/cmd/mmctl/commands
|
||||
LDFLAGS += -X "$(MMCTL_PKG).gitCommit=$(BUILD_HASH)"
|
||||
LDFLAGS += -X "$(MMCTL_PKG).gitTreeState=$(GIT_TREESTATE)"
|
||||
LDFLAGS += -X "$(MMCTL_PKG).buildDate=$(BUILD_DATE)"
|
||||
|
||||
# Enterprise
|
||||
BUILD_ENTERPRISE_DIR ?= ../../enterprise
|
||||
BUILD_ENTERPRISE ?= true
|
||||
@@ -58,6 +74,9 @@ BUILD_ENTERPRISE_READY = false
|
||||
BUILD_TYPE_NAME = team
|
||||
BUILD_HASH_ENTERPRISE = none
|
||||
ifneq ($(wildcard $(BUILD_ENTERPRISE_DIR)/.),)
|
||||
MMCTL_TESTFLAGS += -ldflags '-X "$(MMCTL_PKG).EnableEnterpriseTests=true" -X "github.com/mattermost/mattermost-server/server/public/model.BuildEnterpriseReady=true"'
|
||||
MMCTL_BUILD_TAGS += enterprise
|
||||
|
||||
ifeq ($(BUILD_ENTERPRISE),true)
|
||||
BUILD_ENTERPRISE_READY = true
|
||||
BUILD_TYPE_NAME = enterprise
|
||||
@@ -132,10 +151,11 @@ DIST_PATH_WIN=$(DIST_ROOT)/windows/mattermost
|
||||
TESTS=.
|
||||
|
||||
# Packages lists
|
||||
TE_PACKAGES=$(shell $(GO) list ./... | grep -vE 'server/v8/playbooks|server/v8/boards')
|
||||
TE_PACKAGES=$(shell $(GO) list ./... | grep -vE 'server/v8/playbooks|server/v8/boards|server/v8/cmd/mmctl')
|
||||
BOARDS_PACKAGES=$(shell $(GO) list ./... | grep -E 'server/v8/boards')
|
||||
PLAYBOOKS_PACKAGES=$(shell $(GO) list ./... | grep -E 'server/v8/playbooks')
|
||||
SUITE_PACKAGES=$(shell $(GO) list ./...)
|
||||
SUITE_PACKAGES=$(shell $(GO) list ./...| grep -vE 'server/v8/cmd/mmctl')
|
||||
MMCTL_PACKAGES=$(shell $(GO) list ./... | grep -E 'server/v8/cmd/mmctl')
|
||||
|
||||
TEMPLATES_DIR=templates
|
||||
|
||||
@@ -288,9 +308,9 @@ prepackaged-plugins: ## Populate the prepackaged-plugins directory
|
||||
|
||||
prepackaged-binaries: ## Populate the prepackaged-binaries to the bin directory
|
||||
ifeq ($(shell test -f bin/mmctl && printf "yes"),yes)
|
||||
@echo "MMCTL already exists in bin/mmctl not downloading a new version."
|
||||
@echo "MMCTL already exists in bin/mmctl, not compiling."
|
||||
else
|
||||
@scripts/download_mmctl_release.sh
|
||||
$(MAKE) mmctl-build
|
||||
endif
|
||||
|
||||
golangci-lint: ## Run golangci-lint on codebase
|
||||
@@ -385,10 +405,14 @@ platform-mocks: ## Creates mocks for platform interfaces.
|
||||
$(GO) install github.com/vektra/mockery/v2/...@v2.14.0
|
||||
$(GOBIN)/mockery --dir channels/app/platform --name SuiteIFace --output channels/app/platform/mocks --note 'Regenerate this file using `make platform-mocks`.'
|
||||
|
||||
mmctl-mocks: ## Creates mocks for mmctl
|
||||
$(GO) install github.com/golang/mock/mockgen@v1.6.0
|
||||
$(GOBIN)/mockgen -destination=cmd/mmctl/mocks/client_mock.go -copyright_file=cmd/mmctl/mocks/copyright.txt -package=mocks github.com/mattermost/mattermost-server/server/v8/cmd/mmctl/client Client
|
||||
|
||||
pluginapi: ## Generates api and hooks glue code for plugins
|
||||
$(GO) generate $(GOFLAGS) ./public/plugin
|
||||
|
||||
mocks: store-mocks telemetry-mocks filestore-mocks ldap-mocks plugin-mocks einterfaces-mocks searchengine-mocks sharedchannel-mocks misc-mocks email-mocks platform-mocks
|
||||
mocks: store-mocks telemetry-mocks filestore-mocks ldap-mocks plugin-mocks einterfaces-mocks searchengine-mocks sharedchannel-mocks misc-mocks email-mocks platform-mocks mmctl-mocks
|
||||
|
||||
layers: app-layers store-layers pluginapi boards-gen
|
||||
|
||||
@@ -522,6 +546,23 @@ inject-test-data: # add test data to the local instance.
|
||||
@echo Login with a regular account username=user-1 password=SampleUs@r-1
|
||||
@echo ========================================================================
|
||||
|
||||
test-mmctl-unit:
|
||||
@echo Running mmctl unit tests
|
||||
$(GO) test $(MMCTL_TESTFLAGS) -tags 'unit $(MMCTL_BUILD_TAGS)' $(MMCTL_PACKAGES)
|
||||
|
||||
test-mmctl-e2e: start-docker
|
||||
@echo Running mmctl e2e tests
|
||||
MM_SERVER_PATH=$(MM_SERVER_PATH) $(GO) test $(MMCTL_TESTFLAGS) -tags 'e2e $(MMCTL_BUILD_TAGS)' $(MMCTL_PACKAGES)
|
||||
|
||||
test-mmctl: start-docker
|
||||
@echo Running all mmctl tests
|
||||
MM_SERVER_PATH=$(MM_SERVER_PATH) $(GO) test $(MMCTL_TESTFLAGS) -tags 'unit e2e $(MMCTL_BUILD_TAGS)' $(MMCTL_PACKAGES)
|
||||
|
||||
test-mmctl-coverage: start-docker
|
||||
@echo Running all mmctl tests with coverage
|
||||
MM_SERVER_PATH=$(MM_SERVER_PATH) $(GO) test $(MMCTL_TESTFLAGS) -tags 'unit e2e $(MMCTL_BUILD_TAGS)' -coverprofile=mmctlcover.out $(MMCTL_PACKAGES)
|
||||
$(GO) tool cover -html=mmctlcover.out
|
||||
|
||||
validate-go-version: ## Validates the installed version of go against Mattermost's minimum requirement.
|
||||
@if [ $(GO_MAJOR_VERSION) -gt $(MINIMUM_SUPPORTED_GO_MAJOR_VERSION) ]; then \
|
||||
exit 0 ;\
|
||||
@@ -745,6 +786,13 @@ ifeq ($(BUILD_ENTERPRISE_READY),true)
|
||||
@! ag --ignore Makefile --ignore-dir runtime '(TODO|XXX|FIXME|"FIX ME")[: ]+' $(BUILD_ENTERPRISE_DIR)/
|
||||
endif
|
||||
|
||||
mmctl-build: ## Compiles and generates the mmctl binary
|
||||
go build -trimpath -ldflags '$(LDFLAGS)' -o $(GOBIN) ./cmd/mmctl
|
||||
|
||||
mmctl-docs: ## Generate the mmctl docs
|
||||
rm -rf ./cmd/mmctl/docs
|
||||
cd ./cmd/mmctl && go run mmctl.go docs
|
||||
|
||||
## Help documentation à la https://marmelab.com/blog/2016/02/29/auto-documented-makefile.html
|
||||
help:
|
||||
@grep -E '^[0-9a-zA-Z_-]+:.*?## .*$$' ./Makefile | sort | awk 'BEGIN {FS = ":.*?## "}; {printf "\033[36m%-30s\033[0m %s\n", $$1, $$2}'
|
||||
|
||||
Ссылка в новой задаче
Block a user