-
Notifications
You must be signed in to change notification settings - Fork 3
Expand file tree
/
Copy pathMakefile
More file actions
193 lines (173 loc) · 7.39 KB
/
Makefile
File metadata and controls
193 lines (173 loc) · 7.39 KB
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
# ==============================================================================
# Development environment
# ==============================================================================
-include .env.local
CONTAINER := magento
IMAGE := michielgerritsen/magento-project-community-edition
TAG := php82-fpm-magento2.4.6-sample-data
PORT := 1234
URL := http://localhost:$(PORT)/
TWO_ENV := $(shell gcloud config get-value account 2>/dev/null | grep -q '@two\.inc$$' && echo staging || echo sandbox)
TWO_API_BASE_URL ?= https://api.$(TWO_ENV).two.inc
TWO_CHECKOUT_BASE_URL ?= https://checkout.$(TWO_ENV).two.inc
TWO_STORE_COUNTRY ?= NO
TWO_BRAND ?=
TWO_BRAND_VERSION ?=
export PORT
.PHONY: help install configure compile run debug stop clean logs proxy archive patch minor major format test test-e2e
.DEFAULT_GOAL := help
## Show this help
help:
@awk '/^## /{desc=substr($$0,4)} /^[a-zA-Z_-]+:/{if(desc){printf " \033[36m%-16s\033[0m %s\n",$$1,desc; desc=""}}' $(MAKEFILE_LIST)
## Create Magento container, install plugin and Xdebug
install: clean
docker run -d \
--name=$(CONTAINER) \
-p $(PORT):80 \
--add-host=host.docker.internal:host-gateway \
-e URL=$(URL) \
-e TWO_API_BASE_URL=$(TWO_API_BASE_URL) \
-e TWO_CHECKOUT_BASE_URL=$(TWO_CHECKOUT_BASE_URL) \
$(if $(TWO_BRAND),-e TWO_BRAND=$(TWO_BRAND)) \
$(if $(TWO_BRAND_VERSION),-e TWO_BRAND_VERSION=$(TWO_BRAND_VERSION)) \
-v $(CURDIR):/data/extensions/workdir \
$(IMAGE):$(TAG)
@echo "Waiting for Magento to start..."
@until docker exec $(CONTAINER) php bin/magento --version 2>/dev/null; do sleep 3; done
docker exec $(CONTAINER) composer require two-inc/magento2:@dev --no-plugins
docker exec $(CONTAINER) rm -rf /data/generated/code
docker exec $(CONTAINER) php bin/magento module:disable Magento_AdminAdobeImsTwoFactorAuth Magento_TwoFactorAuth
docker exec $(CONTAINER) php bin/magento module:enable Two_Gateway
docker exec $(CONTAINER) php bin/magento setup:upgrade
docker exec $(CONTAINER) php bin/magento deploy:mode:set developer
docker exec $(CONTAINER) php bin/magento setup:di:compile
$(MAKE) configure TWO_API_KEY=$(or $(TWO_API_KEY),dummy-dev-key)
docker exec $(CONTAINER) bash /data/extensions/workdir/dev/install-xdebug
@./start-proxy.sh --background || true
@PROXY_URL=$$(./start-proxy.sh url 2>/dev/null); \
if [ -n "$$PROXY_URL" ]; then \
docker exec $(CONTAINER) bash /data/extensions/workdir/dev/patch-proxy "$$PROXY_URL" 2>&1 | grep -v Xdebug; \
fi; \
echo ""; \
echo "========================================="; \
echo " Magento store: $(URL)"; \
echo " Admin panel: $(URL)admin"; \
if [ -n "$$PROXY_URL" ]; then \
echo " Proxy store: $$PROXY_URL/"; \
echo " Proxy admin: $$PROXY_URL/admin"; \
fi; \
echo " Credentials: exampleuser / examplepassword123"; \
echo " Xdebug: installed (activate with 'make debug')"; \
echo "========================================="
## Update payment config: make configure TWO_API_KEY=xxx
configure:
docker exec \
-e TWO_API_KEY=$(TWO_API_KEY) \
-e TWO_STORE_COUNTRY=$(TWO_STORE_COUNTRY) \
$(CONTAINER) php /data/extensions/workdir/dev/configure
docker exec $(CONTAINER) php bin/magento cache:flush
docker restart $(CONTAINER)
## Recompile Magento DI (after adding/changing PHP classes, plugins, or preferences)
compile:
docker exec $(CONTAINER) php bin/magento setup:di:compile
docker restart $(CONTAINER)
## Start Magento container and FRP proxy
run:
docker start $(CONTAINER)
@./start-proxy.sh --background || true
@PROXY_URL=$$(./start-proxy.sh url 2>/dev/null); \
if [ -n "$$PROXY_URL" ]; then \
docker exec $(CONTAINER) bash /data/extensions/workdir/dev/patch-proxy "$$PROXY_URL" 2>&1 | grep -v Xdebug; \
fi; \
echo ""; \
echo "========================================="; \
echo " Magento store: $(URL)"; \
echo " Admin panel: $(URL)admin"; \
if [ -n "$$PROXY_URL" ]; then \
echo " Proxy store: $$PROXY_URL/"; \
echo " Proxy admin: $$PROXY_URL/admin"; \
fi; \
echo " Credentials: exampleuser / examplepassword123"; \
echo "========================================="
## Start Magento with Xdebug and caches disabled for hot reload
debug:
docker start $(CONTAINER)
@docker exec $(CONTAINER) bash -c '\
INIS=$$(find /etc/php /usr/local/etc/php -name "*xdebug*" 2>/dev/null); \
if [ -n "$$INIS" ]; then \
echo "$$INIS" | xargs sed -i "s/xdebug.mode=off/xdebug.mode=debug/"; \
echo "Xdebug activated (listening on port 9003)"; \
else \
echo "Xdebug not installed (run: make install)"; \
fi'
docker exec $(CONTAINER) php bin/magento cache:disable
docker exec $(CONTAINER) php bin/magento cache:flush
docker restart $(CONTAINER)
@./start-proxy.sh --background || true
@PROXY_URL=$$(./start-proxy.sh url 2>/dev/null); \
if [ -n "$$PROXY_URL" ]; then \
docker exec $(CONTAINER) bash /data/extensions/workdir/dev/patch-proxy "$$PROXY_URL" 2>&1 | grep -v Xdebug; \
fi; \
echo ""; \
echo "========================================="; \
echo " Magento store: $(URL)"; \
echo " Admin panel: $(URL)admin"; \
if [ -n "$$PROXY_URL" ]; then \
echo " Proxy store: $$PROXY_URL/"; \
echo " Proxy admin: $$PROXY_URL/admin"; \
fi; \
echo " Credentials: exampleuser / examplepassword123"; \
echo " Mode: debug (Xdebug + caches disabled)"; \
echo "========================================="
## Stop Magento container and FRP proxy
stop:
-./start-proxy.sh stop 2>/dev/null
-docker exec $(CONTAINER) bash /data/extensions/workdir/dev/patch-proxy --reset 2>/dev/null
docker stop $(CONTAINER)
## Remove the Magento container and stop proxy
clean:
-./start-proxy.sh stop 2>/dev/null
-docker stop $(CONTAINER) 2>/dev/null
-docker rm $(CONTAINER) 2>/dev/null
## Run FRP proxy in foreground (Ctrl-C to stop)
proxy:
./start-proxy.sh
## Tail Two plugin logs
logs:
docker exec $(CONTAINER) bash -c 'mkdir -p var/log/two && touch var/log/two/debug.log var/log/two/error.log && chmod -R 777 var/log/two && tail -f var/log/two/debug.log var/log/two/error.log'
# ==============================================================================
# Release
# ==============================================================================
## Create a versioned zip archive
archive:
eval $$(bumpver show --environ) && git archive --format zip HEAD > magento-plugin-$${CURRENT_VERSION}.zip
bumpver-%:
SKIP=commit-msg bumpver update --$*
## Bump patch version
patch: bumpver-patch
## Bump minor version
minor: bumpver-minor
## Bump major version
major: bumpver-major
PHPUNIT_VERSION := 9.6.34
PHPUNIT_SHA256 := e7264ae61fe58a487c2bd741905b85940d8fbc2b32cf4a279949b6d9a172a06a
## Run PHPUnit tests
test:
docker run --rm -v $(CURDIR):/app -w /app php:8.1-cli bash -c \
"php -r \"copy('https://phar.phpunit.de/phpunit-$(PHPUNIT_VERSION).phar', '/tmp/phpunit.phar');\" \
&& echo '$(PHPUNIT_SHA256) /tmp/phpunit.phar' | sha256sum -c - \
&& php /tmp/phpunit.phar"
## Run end-to-end API tests (requires TWO_API_KEY)
test-e2e:
docker run --rm -v $(CURDIR):/app -w /app \
-e TWO_API_KEY=$(TWO_API_KEY) \
-e TWO_API_BASE_URL=$(TWO_API_BASE_URL) \
php:8.1-cli bash -c \
"php -r \"copy('https://phar.phpunit.de/phpunit-$(PHPUNIT_VERSION).phar', '/tmp/phpunit.phar');\" \
&& echo '$(PHPUNIT_SHA256) /tmp/phpunit.phar' | sha256sum -c - \
&& php /tmp/phpunit.phar --testsuite E2E"
## Format frontend assets with Prettier
format:
prettier -w view/frontend/web/js/
prettier -w view/frontend/web/css/
prettier -w view/frontend/web/template/