-
-
Notifications
You must be signed in to change notification settings - Fork 2.2k
/
Copy pathMakefile
194 lines (157 loc) · 5.29 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
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
ifeq ($(CIRCLECI),true)
ifneq ($(CIRCLE_PULL_REQUEST),)
CIRCLE_PR_NUMBER ?= $(shell echo $${CIRCLE_PULL_REQUEST##*/})
endif
REPO := $(CIRCLE_PROJECT_USERNAME)/$(CIRCLE_PROJECT_REPONAME)
BRANCH := $(CIRCLE_BRANCH)
PR_NUMBER=$(if $(CIRCLE_PR_NUMBER),$(CIRCLE_PR_NUMBER),false)
BUILD := $(CIRCLE_BUILD_NUM)
SHA1 := $(CIRCLE_SHA1)
TAG := $(CIRCLE_TAG)
else
REPO := $(TRAVIS_REPO_SLUG)
BRANCH := $(if $(TRAVIS_PULL_REQUEST_BRANCH),$(TRAVIS_PULL_REQUEST_BRANCH),$(TRAVIS_BRANCH))
PR_NUMBER := $(TRAVIS_PULL_REQUEST)
BUILD := $(TRAVIS_BUILD_NUMBER)
SHA1 := $(if $(TRAVIS_PULL_REQUEST_SHA),$(TRAVIS_PULL_REQUEST_SHA),$(TRAVIS_COMMIT))
TAG := $(TRAVIS_TAG)
endif
GIT_TAG := $(shell git describe --abbrev=0 --tags)
GIT_COMMIT := $(shell git log --format="%h" -n 1)
BUILD := $(GIT_TAG)
ifeq ($(TAG),)
ifeq ($(BRANCH),)
# If we are not on travis or it's not a TAG build, we add "-dev" to the name
BUILD := $(GIT_COMMIT)$(shell if ! $$(git describe --abbrev=0 --tags --exact-match 2>/dev/null >/dev/null); then echo "-dev"; fi)
else
BUILD := $(BRANCH)
endif
endif
DESTDIR := monica-$(BUILD)
ASSETS := monica-assets-$(BUILD)
test:
echo $(BUILD)
default: build
all:
$(MAKE) fullclean
$(MAKE) build
$(MAKE) dist
docker:
$(MAKE) docker_build
$(MAKE) docker_tag
$(MAKE) docker_push
docker_build:
docker-compose build
docker images
DOCKER_SQUASH := $(shell which docker-squash)
ifeq ($(TAG),)
DOCKER_SQUASH := ~/.local/bin/docker-squash
endif
docker_squash:
docker-squash -t monicahq/monicahq:latest monicahq/monicahq:latest
docker images
docker_tag:
docker tag monicahq/monicahq monicahq/monicahq:$(GIT_TAG)
docker_push:
docker push monicahq/monicahq:$(GIT_TAG)
docker push monicahq/monicahq:latest
docker_push_bintray: .travis.deploy.json
docker tag monicahq/monicahq monicahq-docker-docker.bintray.io/monicahq/monicahq:$(BUILD)
docker push monicahq-docker-docker.bintray.io/monicahq/monicahq:$(BUILD)
BUILD=$(BUILD) scripts/tests/fix-bintray.sh
.PHONY: docker docker_build docker_tag docker_push docker_push_bintray
build: build-dev
build-prod:
composer install --no-interaction --no-suggest --ignore-platform-reqs --no-dev
php artisan lang:generate
yarn install
yarn run production
build-dev:
composer install --no-interaction --no-suggest --ignore-platform-reqs
php artisan lang:generate
yarn install
yarn run dev
prepare: $(DESTDIR) $(ASSETS)
mkdir -p results
$(DESTDIR):
mkdir -p $@
ln -s ../readme.md $@/
ln -s ../CONTRIBUTING.md $@/
ln -s ../CHANGELOG $@/
ln -s ../CONTRIBUTORS $@/
ln -s ../LICENSE $@/
ln -s ../.env.example $@/
ln -s ../composer.json $@/
ln -s ../composer.lock $@/
ln -s ../package.json $@/
ln -s ../package-lock.json $@/
ln -s ../app.json $@/
ln -s ../nginx_app.conf $@/
ln -s ../server.php $@/
ln -s ../webpack.mix.js $@/
ln -s ../Procfile $@/
ln -s ../app $@/
ln -s ../artisan $@/
ln -s ../bootstrap $@/
ln -s ../config $@/
ln -s ../database $@/
ln -s ../docs $@/
ln -s ../public $@/
ln -s ../resources $@/
ln -s ../routes $@/
ln -s ../vendor $@/
mkdir -p $@/storage/app/public
mkdir -p $@/storage/debugbar
mkdir -p $@/storage/logs
mkdir -p $@/storage/framework/views
mkdir -p $@/storage/framework/cache
mkdir -p $@/storage/framework/sessions
$(ASSETS):
mkdir -p $@/public
ln -s ../../public/mix-manifest.json $@/public/
ln -s ../../public/js $@/public/
ln -s ../../public/css $@/public/
ln -s ../../public/fonts $@/public/
dist: results/$(DESTDIR).tar.bz2 results/$(ASSETS).tar.bz2
assets: results/$(ASSETS).tar.bz2
COMMIT_MESSAGE := $(shell echo "$$TRAVIS_COMMIT_MESSAGE" | sed -s 's/"/\\\\\\\\\\"/g' | sed -s 's/(/\\(/g' | sed -s 's/)/\\)/g' | sed -s 's%/%\\/%g')
ifeq (,$(DEPLOY_TEMPLATE))
DEPLOY_TEMPLATE := scripts/tests/.travis.deploy.json.in
endif
.travis.deploy.json: $(DEPLOY_TEMPLATE)
cp $< $@
sed -si "s/\$$(version)/$(BUILD)/" $@
sed -si "s/\$$(description)/$(COMMIT_MESSAGE)/" $@
sed -si "s/\$$(released)/$(shell date -u '+%FT%T.000Z')/" $@
sed -si "s/\$$(travis_tag)/$(TRAVIS_TAG)/" $@
sed -si "s/\$$(travis_commit)/$(GIT_COMMIT)/" $@
sed -si "s/\$$(travis_build_number)/$(TRAVIS_BUILD_NUMBER)/" $@
results/%.tar.xz: % prepare
tar chfJ $@ --exclude .gitignore --exclude .gitkeep $<
results/%.tar.bz2: % prepare
tar chfj $@ --exclude .gitignore --exclude .gitkeep $<
results/%.tar.gz: % prepare
tar chfz $@ --exclude .gitignore --exclude .gitkeep $<
results/%.zip: % prepare
zip -rq9 $@ $< --exclude "*.gitignore*" "*.gitkeep*"
clean:
rm -rf $(DESTDIR) $(ASSETS)
rm -f results/$(DESTDIR).* results/$(ASSETS).* .travis.deploy.json
fullclean: clean
rm -rf vendor resources/vendor public/fonts/vendor node_modules
rm -f public/css/* public/js/* public/mix-manifest.json public/storage bootstrap/cache/*
install: .env build-dev
php artisan key:generate
php artisan setup:test
php artisan passport:install
update: .env build-dev
php artisan migrate
.env:
cp .env.example .env
.PHONY: dist clean fullclean install update build prepare build-prod build-dev
vagrant_build:
make -C scripts/vagrant/build package
push_bintray_assets: results/$(ASSETS).tar.bz2 .travis.deploy.json
INPUT=results/$(ASSETS).tar.bz2 FILE=$(ASSETS).tar.bz2 scripts/tests/bintray-upload.sh
push_bintray_dist: results/$(DESTDIR).tar.bz2 .travis.deploy.json
INPUT=results/$(DESTDIR).tar.bz2 FILE=$(DESTDIR).tar.bz2 scripts/tests/bintray-upload.sh