Sync with playbooks: install-go-tools, gotestsum, and dynamic versions (#192)
* Revert "Update main.go (#154)" This reverts commitbe4a281d0c
. * Revert "[MM-33506] Use embed package to include plugin manifest (#145)" This reverts commitca9ee3c17c
. * Revert "Don't generate manifest.ts (#127)" This reverts commit18d30b50bc
. * install-go-tools target, adopt gotestsum * bring back make apply + automatic versioning * Update build/manifest/main.go Co-authored-by: Michael Kochell <6913320+mickmister@users.noreply.github.com> * suppress git describe error when no tags match * make version/release notes opt-in * fix whitespace in Makefile * document version management options --------- Co-authored-by: Michael Kochell <6913320+mickmister@users.noreply.github.com>
This commit is contained in:
parent
376ea7e1f5
commit
de0b31b48a
12 changed files with 198 additions and 50 deletions
53
Makefile
53
Makefile
|
@ -2,7 +2,6 @@ GO ?= $(shell command -v go 2> /dev/null)
|
|||
NPM ?= $(shell command -v npm 2> /dev/null)
|
||||
CURL ?= $(shell command -v curl 2> /dev/null)
|
||||
MM_DEBUG ?=
|
||||
MANIFEST_FILE ?= plugin.json
|
||||
GOPATH ?= $(shell go env GOPATH)
|
||||
GO_TEST_FLAGS ?= -race
|
||||
GO_BUILD_FLAGS ?=
|
||||
|
@ -13,6 +12,10 @@ DEFAULT_GOARCH := $(shell go env GOARCH)
|
|||
|
||||
export GO111MODULE=on
|
||||
|
||||
# We need to export GOBIN to allow it to be set
|
||||
# for processes spawned from the Makefile
|
||||
export GOBIN ?= $(PWD)/bin
|
||||
|
||||
# You can include assets this directory into the bundle. This can be e.g. used to include profile pictures.
|
||||
ASSETS_DIR ?= assets
|
||||
|
||||
|
@ -22,7 +25,6 @@ default: all
|
|||
|
||||
# Verify environment, and define PLUGIN_ID, PLUGIN_VERSION, HAS_SERVER and HAS_WEBAPP as needed.
|
||||
include build/setup.mk
|
||||
include build/legacy.mk
|
||||
|
||||
BUNDLE_NAME ?= $(PLUGIN_ID)-$(PLUGIN_VERSION).tar.gz
|
||||
|
||||
|
@ -41,9 +43,20 @@ endif
|
|||
.PHONY: all
|
||||
all: check-style test dist
|
||||
|
||||
## Propagates plugin manifest information into the server/ and webapp/ folders.
|
||||
.PHONY: apply
|
||||
apply:
|
||||
./build/bin/manifest apply
|
||||
|
||||
## Install go tools
|
||||
install-go-tools:
|
||||
@echo Installing go tools
|
||||
$(GO) install github.com/golangci/golangci-lint/cmd/golangci-lint@v1.51.1
|
||||
$(GO) install gotest.tools/gotestsum@v1.7.0
|
||||
|
||||
## Runs eslint and golangci-lint
|
||||
.PHONY: check-style
|
||||
check-style: webapp/node_modules
|
||||
check-style: apply webapp/node_modules install-go-tools
|
||||
@echo Checking for style guide compliance
|
||||
|
||||
ifneq ($(HAS_WEBAPP),)
|
||||
|
@ -51,14 +64,13 @@ ifneq ($(HAS_WEBAPP),)
|
|||
cd webapp && npm run check-types
|
||||
endif
|
||||
|
||||
# It's highly recommended to run go-vet first
|
||||
# to find potential compile errors that could introduce
|
||||
# weird reports at golangci-lint step
|
||||
ifneq ($(HAS_SERVER),)
|
||||
@if ! [ -x "$$(command -v golangci-lint)" ]; then \
|
||||
echo "golangci-lint is not installed. Please see https://github.com/golangci/golangci-lint#install for installation instructions."; \
|
||||
exit 1; \
|
||||
fi; \
|
||||
|
||||
@echo Running golangci-lint
|
||||
golangci-lint run ./...
|
||||
$(GO) vet ./...
|
||||
$(GOBIN)/golangci-lint run ./...
|
||||
endif
|
||||
|
||||
## Builds the server, if it exists, for all supported architectures, unless MM_SERVICESETTINGS_ENABLEDEVELOPER is set.
|
||||
|
@ -104,7 +116,7 @@ endif
|
|||
bundle:
|
||||
rm -rf dist/
|
||||
mkdir -p dist/$(PLUGIN_ID)
|
||||
cp $(MANIFEST_FILE) dist/$(PLUGIN_ID)/
|
||||
./build/bin/manifest dist
|
||||
ifneq ($(wildcard $(ASSETS_DIR)/.),)
|
||||
cp -r $(ASSETS_DIR) dist/$(PLUGIN_ID)/
|
||||
endif
|
||||
|
@ -125,7 +137,7 @@ endif
|
|||
|
||||
## Builds and bundles the plugin.
|
||||
.PHONY: dist
|
||||
dist: server webapp bundle
|
||||
dist: apply server webapp bundle
|
||||
|
||||
## Builds and installs the plugin to a server.
|
||||
.PHONY: deploy
|
||||
|
@ -134,7 +146,7 @@ deploy: dist
|
|||
|
||||
## Builds and installs the plugin to a server, updating the webapp automatically when changed.
|
||||
.PHONY: watch
|
||||
watch: server bundle
|
||||
watch: apply server bundle
|
||||
ifeq ($(MM_DEBUG),)
|
||||
cd webapp && $(NPM) run build:watch
|
||||
else
|
||||
|
@ -188,9 +200,20 @@ detach: setup-attach
|
|||
|
||||
## Runs any lints and unit tests defined for the server and webapp, if they exist.
|
||||
.PHONY: test
|
||||
test: webapp/node_modules
|
||||
test: apply webapp/node_modules install-go-tools
|
||||
ifneq ($(HAS_SERVER),)
|
||||
$(GO) test -v $(GO_TEST_FLAGS) ./server/...
|
||||
$(GOBIN)/gotestsum -- -v ./...
|
||||
endif
|
||||
ifneq ($(HAS_WEBAPP),)
|
||||
cd webapp && $(NPM) run test;
|
||||
endif
|
||||
|
||||
## Runs any lints and unit tests defined for the server and webapp, if they exist, optimized
|
||||
## for a CI environment.
|
||||
.PHONY: test-ci
|
||||
test-ci: apply webapp/node_modules install-go-tools
|
||||
ifneq ($(HAS_SERVER),)
|
||||
$(GOBIN)/gotestsum --format standard-verbose --junitfile report.xml -- ./...
|
||||
endif
|
||||
ifneq ($(HAS_WEBAPP),)
|
||||
cd webapp && $(NPM) run test;
|
||||
|
@ -198,7 +221,7 @@ endif
|
|||
|
||||
## Creates a coverage report for the server code.
|
||||
.PHONY: coverage
|
||||
coverage: webapp/node_modules
|
||||
coverage: apply webapp/node_modules
|
||||
ifneq ($(HAS_SERVER),)
|
||||
$(GO) test $(GO_TEST_FLAGS) -coverprofile=server/coverage.txt ./server/...
|
||||
$(GO) tool cover -html=server/coverage.txt
|
||||
|
|
Reference in a new issue