Makefile 3.8 KB
Newer Older
K
kezhenxu94 已提交
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
#
# Licensed to the Apache Software Foundation (ASF) under one or more
# contributor license agreements.  See the NOTICE file distributed with
# this work for additional information regarding copyright ownership.
# The ASF licenses this file to You under the Apache License, Version 2.0
# (the "License"); you may not use this file except in compliance with
# the License.  You may obtain a copy of the License at
#
#     http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
#
H
heyanlong 已提交
17

18 19 20
VERSION ?= latest
OUT_DIR = bin
BINARY = swctl
H
heyanlong 已提交
21

K
kezhenxu94 已提交
22 23 24
RELEASE_BIN = skywalking-cli-$(VERSION)-bin
RELEASE_SRC = skywalking-cli-$(VERSION)-src

25
OS = $(shell uname)
K
kezhenxu94 已提交
26

27 28 29 30 31 32 33
GO = go
GO_PATH = $$($(GO) env GOPATH)
GO_BUILD = $(GO) build
GO_GET = $(GO) get
GO_TEST = $(GO) test
GO_LINT = $(GO_PATH)/bin/golangci-lint
GO_LICENSER = $(GO_PATH)/bin/go-licenser
K
kezhenxu94 已提交
34
GO_PACKR = $(GO_PATH)/bin/packr2
35
GO_BUILD_FLAGS = -v
K
kezhenxu94 已提交
36
GO_BUILD_LDFLAGS = -X main.version=$(VERSION)
K
kezhenxu94 已提交
37
GQL_GEN = $(GO_PATH)/bin/gqlgen
38 39 40 41 42 43 44

PLATFORMS := windows linux darwin
os = $(word 1, $@)
ARCH = amd64

SHELL = /bin/bash

K
kezhenxu94 已提交
45
all: clean license deps codegen lint test build
46

47
tools:
K
kezhenxu94 已提交
48
	$(GO_PACKR) -v || $(GO_GET) -u github.com/gobuffalo/packr/v2/...
49 50
	$(GO_LINT) version || curl -sfL https://raw.githubusercontent.com/golangci/golangci-lint/master/install.sh | sh -s -- -b $(GO_PATH)/bin v1.21.0
	$(GO_LICENSER) -version || GO111MODULE=off $(GO_GET) -u github.com/elastic/go-licenser
K
kezhenxu94 已提交
51
	$(GQL_GEN) version || $(GO_GET) -u github.com/99designs/gqlgen
52 53

deps: tools
54 55
	$(GO_GET) -v -t -d ./...

56
codegen: clean tools
57
	echo 'scalar Long' > query-protocol/schema.graphqls
K
kezhenxu94 已提交
58
	$(GQL_GEN) generate
59
	-rm -rf generated.go
K
kezhenxu94 已提交
60
	cd assets && GO111MODULE=on $(GO_PACKR) -v && cd ..
61

62 63 64
.PHONY: $(PLATFORMS)
$(PLATFORMS):
	mkdir -p $(OUT_DIR)
K
kezhenxu94 已提交
65
	GOOS=$(os) GOARCH=$(ARCH) $(GO_BUILD) $(GO_BUILD_FLAGS) -ldflags "$(GO_BUILD_LDFLAGS)" -o $(OUT_DIR)/$(BINARY)-$(VERSION)-$(os)-$(ARCH) cmd/main.go
66 67

.PHONY: lint
68
lint: codegen tools
69 70 71
	$(GO_LINT) run -v ./...

.PHONE: test
72
test: clean codegen lint
73 74 75 76 77 78
	$(GO_TEST) ./... -coverprofile=coverage.txt -covermode=atomic

.PHONY: build
build: deps windows linux darwin

.PHONY: license
79
license: clean tools
K
kezhenxu94 已提交
80
	$(GO_LICENSER) -d -licensor='Apache Software Foundation (ASF)' .
81 82 83 84 85

.PHONY: verify
verify: clean lint test license

.PHONY: fix
86
fix: tools
87 88 89 90 91 92 93 94
	$(GO_LINT) run -v --fix ./...
	$(GO_LICENSER) -licensor='Apache Software Foundation (ASF)' .

.PHONY: coverage
coverage: test
	bash <(curl -s https://codecov.io/bash) -t a5af28a3-92a2-4b35-9a77-54ad99b1ae00

.PHONY: clean
95
clean: tools
K
kezhenxu94 已提交
96
	-rm -rf bin
97
	-rm -rf coverage.txt
K
kezhenxu94 已提交
98 99
	-rm -rf query-protocol/schema.graphqls
	-rm -rf graphql/schema/schema.go
K
kezhenxu94 已提交
100 101 102 103
	-rm -rf *.tgz
	-rm -rf *.tgz
	-rm -rf *.asc
	-rm -rf *.sha512
K
kezhenxu94 已提交
104
	cd assets && $(GO_PACKR) clean
K
kezhenxu94 已提交
105 106 107 108 109 110 111 112 113

release-src: clean
	-tar -zcvf $(RELEASE_SRC).tgz \
	--exclude bin \
	--exclude .git \
	--exclude .idea \
	--exclude .DS_Store \
	--exclude .github \
	--exclude $(RELEASE_SRC).tgz \
114
	--exclude graphql/schema/schema.go \
K
kezhenxu94 已提交
115 116 117
	--exclude query-protocol/schema.graphqls \
	--exclude assets/packrd \
	--exclude assets/*-packr.go \
K
kezhenxu94 已提交
118 119 120 121 122
	.

release-bin: build
	-mkdir $(RELEASE_BIN)
	-cp -R bin $(RELEASE_BIN)
K
kezhenxu94 已提交
123 124 125
	-cp -R dist/* $(RELEASE_BIN)
	-cp -R CHANGES.md $(RELEASE_BIN)
	-cp -R README.md $(RELEASE_BIN)
K
kezhenxu94 已提交
126 127 128 129 130
	-tar -zcvf $(RELEASE_BIN).tgz $(RELEASE_BIN)
	-rm -rf $(RELEASE_BIN)

release: verify license release-src release-bin
	gpg --batch --yes --armor --detach-sig $(RELEASE_SRC).tgz
131 132 133
	shasum -a 512 $(RELEASE_SRC).tgz > $(RELEASE_SRC).tgz.sha512
	gpg --batch --yes --armor --detach-sig $(RELEASE_BIN).tgz
	shasum -a 512 $(RELEASE_BIN).tgz > $(RELEASE_BIN).tgz.sha512