-
Notifications
You must be signed in to change notification settings - Fork 7
/
Makefile
executable file
·107 lines (79 loc) · 2.82 KB
/
Makefile
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
#
# github.com/danieldin95/lightstar
#
#
# git clone https://github.com/danieldin95/freecert dist/resource/cert
#
SHELL := /bin/bash
.ONESHELL:
LSB = $(shell lsb_release -i -s)$(shell lsb_release -r -s)
VER = $(shell cat VERSION)
## version
MOD = github.com/danieldin95/lightstar/pkg/libstar
LDFLAGS += -X $(MOD).Commit=$(shell git rev-list -1 HEAD)
LDFLAGS += -X $(MOD).Date=$(shell date +%FT%T%z)
LDFLAGS += -X $(MOD).Version=$(VER)
## directory
SD = $(shell pwd)
BD = $(SD)/build
LD = lightstar-$(LSB)-$(VER)
help: ## show make targets
@awk 'BEGIN {FS = ":.*?## "} /^[a-zA-Z_-]+:.*?## / {sub("\\\\n",sprintf("\n%22c"," "), $$2);\
printf " \033[36m%-20s\033[0m %s\n", $$1, $$2}' $(MAKEFILE_LIST)
## all light software
bin: lightstar ## build all binary
pkg: rpm ## build all packages
rpm: rpm-lightstar ## build rpm packages
# prepare environment
env:
@mkdir -p $(BD)
gofmt -w -s ./pkg ./cmd
## light star
.PHONY: lightstar
lightstar: env
go build -mod=vendor -ldflags "$(LDFLAGS)" -o $(BD)/lightstar ./cmd/lightstar
### linux packaging
rpm-env:
@./dist/spec.sh
@rm -rf $(BD)/cert && ln -s $(SD)/dist/resource/cert $(BD)/cert
rpm-lightstar: rpm-env
rpmbuild -ba $(BD)/lightstar.spec
cp -rf ~/rpmbuild/RPMS/x86_64/lightstar-*.rpm $(BD)
linux-zip: env lightstar ## build linux zip packages
@pushd $(BD)
@rm -rf $(LD) && mkdir -p $(LD)
@cp $(SD)/dist/README.md $(LD)
@mkdir -p $(LD)/etc/lightstar
@cp -rvf $(SD)/dist/resource/auth.json.example $(LD)/etc/lightstar
@cp -rvf $(SD)/dist/resource/zone.json.example $(LD)/etc/lightstar
@cp -rvf $(SD)/dist/resource/permission.json.example $(LD)/etc/lightstar
@mkdir -p $(LD)/etc/sysconfig
@echo OPTIONS="-static:dir /var/lightstar/static -crt:dir /var/lightstar/cert -conf /etc/lightstar" > $(LD)/etc/sysconfig/lightstar.cfg
@mkdir -p $(LD)/var/lightstar
@cp -R $(SD)/dist/resource/ca $(LD)/var/lightstar
@cp -R $(SD)/pkg/http/static $(LD)/var/lightstar
@mkdir -p $(LD)/usr/bin
@cp -rvf $(BD)/lightstar $(LD)/usr/bin
@mkdir -p $(LD)/usr/lib/systemd/system
@cp $(SD)/dist/lightstar.service $(LD)/usr/lib/systemd/system
zip -r ./$(LD).zip $(LD) > /dev/null
@rm -rf $(LD)
@popd
centos-devel:
yum install -y libvirt-devel
patch -p 1 < libvirt-go.patch
ubuntu-devel:
apt-get install -y libvirt-dev
## upgrade
upgrade:
ansible-playbook ./misc/playbook/upgrade.yaml -e "version=$(VER)"
## unit test
.PHONY: test
test: ## execute unit test
go test -v -mod=vendor -bench=. github.com/danieldin95/lightstar/pkg/libstar
go test -v -mod=vendor -bench=. github.com/danieldin95/lightstar/pkg/storage
go test -v -mod=vendor -bench=. github.com/danieldin95/lightstar/pkg/compute/libvirtc
go test -v -mod=vendor -bench=. github.com/danieldin95/lightstar/pkg/storage/libvirts
go test -v -mod=vendor -bench=. github.com/danieldin95/lightstar/pkg/http/client
clean: ## clean cache
rm -rvf ./build