-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathMakefile
79 lines (53 loc) · 1.95 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
pkg_name = staff
user = staff
app_dir = /opt/$(user)
version = $(shell dpkg-parsechangelog --help | grep -q '\--show-field' \
&& dpkg-parsechangelog --show-field version \
|| dpkg-parsechangelog | grep Version | awk '{ print $$2; }')
commit = $(shell git rev-parse HEAD)
version_file = version.yml
bundle_bin=.gem/bin/bundle
bundle_cfg_dir = bundle_build_cfg
app_files = bin app .gem .gemrc config config.ru db Gemfile Gemfile.lock lib public Rakefile README.rdoc vendor $(version_file)
exclude_files = config/database.yml
env_mode = production
define info
echo -e '\n\e[33m> msg \e[39m\n'
endef
define err
echo -e '\n\e[31m> msg \e[39m\n'
endef
all: version.yml
@$(info:msg=init environment)
RAILS_ENV=$(env_mode) RACK_ENV=$(env_mode) RAKE_ENV=$(env_mode) GEM_HOME=.gem GEM_PATH=.gem make all_env
all_env:
@$(info:msg=apply build .gemrc)
@cp -v .gemrc_build .gemrc
@$(info:msg=install bundler)
@gem install bundler
@$(info:msg=install/update gems)
@$(bundle_bin) install
@$(info:msg=precompile assets)
@$(bundle_bin) exec rake assets:precompile
version.yml:
@$(info:msg=create version file (version: $(version), commit: $(commit)))
@echo "version:" $(version) "\ncommit:" $(commit) > $(version_file)
install: $(app_files)
@$(info:msg=install app files)
@mkdir -p $(DESTDIR)$(app_dir)
tar -c --no-auto-compress $(addprefix --exclude , $(exclude_files)) $^ | tar -x -C $(DESTDIR)$(app_dir)
@mkdir -v -p $(addprefix $(DESTDIR)$(app_dir)/, log tmp )
@$(info:msg=install rsyslogd cfg file)
@install -v -m0644 -D debian/$(pkg_name).rsyslog $(DESTDIR)/etc/rsyslog.d/$(pkg_name).conf
@$(info:msg=install logrotate cfg file)
@install -v -m0644 -D debian/$(pkg_name).logrotate $(DESTDIR)/etc/logrotate.d/$(pkg_name)
clean:
make -C debian clean
rm -rf public/assets $(version_file)
rm -rf .bundle_gem .gem
cp -v .gemrc_build .gemrc
package:
dpkg-buildpackage -us -uc -b
chlog:
dch -r --nomultimaint -M
.PHONY: all clean install package chlog version.yml