Makefile 3.4 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 34 35
GO = go
GO_PATH = $$($(GO) env GOPATH)
GO_BUILD = $(GO) build
GO_GET = $(GO) get
GO_CLEAN = $(GO) clean
GO_TEST = $(GO) test
GO_LINT = $(GO_PATH)/bin/golangci-lint
GO_LICENSER = $(GO_PATH)/bin/go-licenser
GO_BUILD_FLAGS = -v
K
kezhenxu94 已提交
36
GO_BUILD_LDFLAGS = -X main.version=$(VERSION)
37 38 39 40 41 42 43

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

SHELL = /bin/bash

44
all: clean deps codegen lint test license build
45 46 47 48

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

49 50 51 52 53
codegen:
	echo 'scalar Long' > query-protocol/schema.graphqls
	$(GO) run github.com/99designs/gqlgen generate
	-rm -rf generated.go

54 55 56
.PHONY: $(PLATFORMS)
$(PLATFORMS):
	mkdir -p $(OUT_DIR)
K
kezhenxu94 已提交
57
	GOOS=$(os) GOARCH=$(ARCH) $(GO_BUILD) $(GO_BUILD_FLAGS) -ldflags "$(GO_BUILD_LDFLAGS)" -o $(OUT_DIR)/$(BINARY)-$(VERSION)-$(os)-$(ARCH) swctl/main.go
58 59

.PHONY: lint
60
lint: codegen
61 62 63 64
	$(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_LINT) run -v ./...

.PHONE: test
65
test: clean codegen lint
66 67 68 69 70 71 72 73
	$(GO_TEST) ./... -coverprofile=coverage.txt -covermode=atomic

.PHONY: build
build: deps windows linux darwin

.PHONY: license
license: clean
	$(GO_LICENSER) -version || GO111MODULE=off $(GO_GET) -u github.com/elastic/go-licenser
74
	$(GO_LICENSER) -exclude graphql/schema/ -d -licensor='Apache Software Foundation (ASF)' .
75 76 77 78 79 80 81 82 83 84 85 86 87 88

.PHONY: verify
verify: clean lint test license

.PHONY: fix
fix:
	$(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
89
clean: codegen
90
	$(GO_CLEAN) ./...
K
kezhenxu94 已提交
91
	-rm -rf bin
92
	-rm -rf coverage.txt
K
kezhenxu94 已提交
93 94 95 96
	-rm -rf *.tgz
	-rm -rf *.tgz
	-rm -rf *.asc
	-rm -rf *.sha512
97
	-rm -rf query-protocol/schema.graphqls
K
kezhenxu94 已提交
98 99 100 101 102 103 104 105 106

release-src: clean
	-tar -zcvf $(RELEASE_SRC).tgz \
	--exclude bin \
	--exclude .git \
	--exclude .idea \
	--exclude .DS_Store \
	--exclude .github \
	--exclude $(RELEASE_SRC).tgz \
107
	--exclude graphql/schema/schema.go \
K
kezhenxu94 已提交
108 109 110 111 112
	.

release-bin: build
	-mkdir $(RELEASE_BIN)
	-cp -R bin $(RELEASE_BIN)
K
kezhenxu94 已提交
113 114 115
	-cp -R dist/* $(RELEASE_BIN)
	-cp -R CHANGES.md $(RELEASE_BIN)
	-cp -R README.md $(RELEASE_BIN)
K
kezhenxu94 已提交
116 117 118 119 120
	-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
121 122 123
	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