forked from klen/graphite-beacon
-
Notifications
You must be signed in to change notification settings - Fork 1
/
Makefile
127 lines (110 loc) · 3.56 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
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/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/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-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: requirements-test.txt
@$(VIRTUALENV)/bin/pip install -r requirements-test.txt
@touch $(VIRTUALENV)/bin/py.test
.PHONY: run
# target: run - Run graphite-beacon
run: $(VIRTUALENV)
@$(VIRTUALENV)/bin/pip install -r requirements-test.txt
$(VIRTUALENV)/bin/python -m graphite_beacon.app --config=local.json
.PHONY: t
# target: t - Runs tests
t: $(VIRTUALENV)/bin/py.test
py.test -xs tests.py