-
Notifications
You must be signed in to change notification settings - Fork 118
/
Makefile
129 lines (112 loc) · 3.71 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
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
VIRTUALENV=$(shell echo "$${VDIR:-'.env'}")
space:=
space+=
all: $(VIRTUALENV)
.PHONY: help
# target: help - Display callable targets
help:
@egrep "^# target:" [Mm]akefile
.PHONY: clean
# target: clean - Clean the repository
clean:
@rm -rf build dist docs/_build *.deb
find $(CURDIR)/$(MODULE) -name "*.pyc" -delete
find $(CURDIR)/$(MODULE) -name "*.orig" -delete
find $(CURDIR)/$(MODULE) -name "__pycache__" -delete
# ==============
# Bump version
# ==============
.PHONY: release
VERSION?=minor
# target: release - Bump version
release:
@pip install bumpversion
@bumpversion $(VERSION)
@git checkout master
@git merge develop
@git checkout develop
@git push origin develop master
@git push --tags
.PHONY: minor
minor: release
.PHONY: patch
patch:
make release VERSION=patch
.PHONY: major
major:
make release VERSION=major
# ===============
# Build package
# ===============
.PHONY: register
# target: register - Register module on PyPi
register:
@python setup.py register
.PHONY: upload
# target: upload - Upload module on PyPi
upload: clean
@pip install twine wheel
@python setup.py sdist upload
@python setup.py bdist_wheel upload
# @python setup.py sdist bdist_wheel
# @twine upload dist/*
.PHONY: deb
BUILD=$(CURDIR)/build
TARGET=/opt/graphite/beacon
PACKAGE_POSTFIX?=
PACKAGE_VERSION?=$(shell git describe --tags --abbrev=0 `git rev-list master --tags --max-count=1`)
PACKAGE_NAME="graphite-beacon"
PACKAGE_FULLNAME=$(PACKAGE_NAME)$(PACKAGE_POSTFIX)
PACKAGE_MAINTAINER="Kirill Klenov <horneds@gmail.com>"
PACKAGE_DESCRIPTION="Simple allerting system for Graphite metrics."
PACKAGE_URL=https://github.com/klen/graphite-beacon.git
deb: clean
@mkdir -p $(BUILD)/etc/init $(BUILD)/etc/init.d $(BUILD)/etc/systemd/system $(BUILD)/$(TARGET)
@cp -r $(CURDIR)/graphite_beacon debian/config.json $(BUILD)/$(TARGET)/.
@cp $(CURDIR)/debian/upstart.conf $(BUILD)/etc/init/graphite-beacon.conf
@cp $(CURDIR)/debian/graphite_beacon.init $(BUILD)/etc/init.d/graphite-beacon
@cp $(CURDIR)/debian/systemd.service $(BUILD)/etc/systemd/system/graphite-beacon.service
@fpm -s dir -t deb -a all \
-n $(PACKAGE_FULLNAME) \
-v $(PACKAGE_VERSION) \
-m $(PACKAGE_MAINTAINER) \
--directories $(TARGET) \
--description $(PACKAGE_DESCRIPTION) \
--url $(PACKAGE_URL) \
--license "Copyright (C) 2014 horneds@gmail.com." \
--deb-user root \
--deb-group root \
--config-files /etc/init/graphite-beacon.conf \
--config-files /etc/systemd/system/graphite-beacon.service \
--config-files /opt/graphite/beacon/config.json \
--before-install $(CURDIR)/debian/before_install.sh \
--before-remove $(CURDIR)/debian/before_remove.sh \
--after-install $(CURDIR)/debian/after_install.sh \
-C $(CURDIR)/build \
-d "python" \
-d "python-dev" \
-d "python-pip" \
opt etc
echo "%$(subst $(space),,$(PACKAGE_VERSION))%"
for name in *.deb; do \
[ -f bintray ] && curl -T "$$name" -uklen:`cat bintray` https://api.bintray.com/content/klen/deb/graphite-beacon/$(subst $(space),,$(PACKAGE_VERSION))/$$name ; \
done
# =============
# Development
# =============
$(VIRTUALENV): requirements.txt
@[ -d $(VIRTUALENV) ] || virtualenv --no-site-packages $(VIRTUALENV)
@$(VIRTUALENV)/bin/pip install -r requirements.txt
@touch $(VIRTUALENV)
$(VIRTUALENV)/bin/py.test: $(VIRTUALENV) test-requirements.txt
@$(VIRTUALENV)/bin/pip install -r test-requirements.txt
@touch $(VIRTUALENV)/bin/py.test
.PHONY: run
# target: run - Run graphite-beacon
run: $(VIRTUALENV)
@$(VIRTUALENV)/bin/pip install -r test-requirements.txt
$(VIRTUALENV)/bin/python -m graphite_beacon.app --config=local.json
.PHONY: t
# target: t - Runs tests
t: $(VIRTUALENV)/bin/py.test tests
$(VIRTUALENV)/bin/py.test -xs tests