This repository has been archived by the owner on Jan 4, 2021. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 63
/
Copy pathMakefile
126 lines (106 loc) · 5.28 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
include Makefile.inc
ALL: clean prepare docker test ## (default) Build all and launch test.
.PHONY: ALL purge clean prepare build docker test docs
purge: ## Reset the local directory as if a fresh git checkout was just make.
@rm -rf node_modules
clean: ## Remove all produced binaries.
@rm -rf dist
@rm -rf docs
prepare: ## Install all dependencies.
@npm install
build: clean ## Building the dist files from sources.
@npm run build
docs: ## Building the doc files from sources.
@npm run docs
docker: build ## Build the docker image containing last version of myscript-js and examples.
@rm -rf docker/examples/delivery/
@mkdir -p docker/examples/delivery
@cp -R dist docker/examples/delivery/
@cp -R examples docker/examples/delivery/
@cp -R node_modules docker/examples/delivery/
@cd docker/examples/ && docker build --build-arg applicationkey=${DEV_APPLICATIONKEY} --build-arg hmackey=${DEV_HMACKEY} $(DOCKER_PARAMETERS) -t $(EXAMPLES_DOCKERREPOSITORY) .
killdocker:
@docker ps -a | grep "myscriptjs-$(DOCKERTAG)-$(BUILDENV)-" | awk '{print $$1}' | xargs -r docker rm -f 2>/dev/null 1>/dev/null || true
quick-test: ## Launch a minimal set of tests to avoid regressions
@echo "This MAKEFILE target assumes that you have a local webserver and selenium host - respectively on port 8080 and 4444 - already running"
@(cd test/nightwatch && nightwatch --retries 1 -c ./local-configuration.json -e $(SELENIUM_ENV))
test: ## Launch a set of tests to avoid regressions, using docker. Set the FULL variable to true to for a full coverage.
@if [ "$$(docker port $(TEST_DOCKER_SELENIUM_INSTANCE_NAME) 4444)" == "" ]; then \
echo "Selenium is not running - launching"; \
$(MAKE) _selenium_launch; \
fi;
$(MAKE) _test; \
RES=$$?; \
$(MAKE) killdocker; \
(exit $${RES};)
_test: killdocker _examples
@if [[ $(FULL) == true ]]; then \
$(MAKE) _test-nightwatch-full; \
else \
$(MAKE) _test-nightwatch; \
fi;
@echo "Starting nightwatch tests!" && \
function cleandockers { (docker ps -a | grep "$(TEST_DOCKER_NAME_PREFIX)" | awk '{print $1}' | xargs -r docker rm -f 2>/dev/null 1>/dev/null || true) ;} && \
trap cleandockers EXIT
_test-nightwatch:
@echo "Starting nightwatch tests!"
@rm -rf test/nightwatch/results && mkdir -p test/nightwatch/results
if [[ $(DEVLOCAL) == true ]]; then \
EXAMPLES_IP=localhost; \
else \
EXAMPLES_IP=$$(docker inspect --format '{{ .NetworkSettings.IPAddress }}' $(TEST_DOCKER_EXAMPLES_INSTANCE_NAME)); \
fi && \
docker run -i --rm \
$(DOCKER_NIGHTWATCH_PARAMETERS) \
--user="${CURRENT_USER_UID}:${CURRENT_USER_GID}" \
-v $(PROJECT_DIR)/test:/tests \
-v $(PROJECT_DIR)/test/nightwatch/commands:/commands \
-v $(PROJECT_DIR)/test/nightwatch/results:/results\
-e "SELENIUM_HOST=selenium" \
-e "SELENIUM_ENV=$(SELENIUM_ENV)" \
-e "SRC_FOLDERS=nightwatch/partial" \
-e "LAUNCH_URL=http://$${EXAMPLES_IP}:$${EXAMPLES_LISTEN_PORT}" \
-e "NIGHTWATCH_TIMEOUT_FACTOR=2" \
$(NIGHTWATCH_DOCKERREPOSITORY)
_test-nightwatch-full:
@echo "Starting nightwatch tests!"
@rm -rf test/nightwatch/results && mkdir -p test/nightwatch/results
if [[ $(DEVLOCAL) == true ]]; then \
EXAMPLES_IP=localhost; \
else \
EXAMPLES_IP=$$(docker inspect --format '{{ .NetworkSettings.IPAddress }}' $(TEST_DOCKER_EXAMPLES_INSTANCE_NAME)); \
fi && \
docker run -i --rm \
$(DOCKER_NIGHTWATCH_PARAMETERS) \
--user="${CURRENT_USER_UID}:${CURRENT_USER_GID}" \
-v $(PROJECT_DIR)/test:/tests \
-v $(PROJECT_DIR)/test/nightwatch/commands:/commands \
-v $(PROJECT_DIR)/test/nightwatch/results:/results\
-e "SELENIUM_HOST=selenium" \
-e "SELENIUM_ENV=$(SELENIUM_ENV)" \
-e "SRC_FOLDERS=nightwatch/full" \
-e "LAUNCH_URL=http://$${EXAMPLES_IP}:$${EXAMPLES_LISTEN_PORT}" \
-e "NIGHTWATCH_TIMEOUT_FACTOR=2" \
$(NIGHTWATCH_DOCKERREPOSITORY)
dev-all: dev-examples dev-selenium ## Launch all the requirements for launching tests.
dev-selenium: ## Launch a local selenium.
@(if [ "$$(docker port $(TEST_DOCKER_SELENIUM_INSTANCE_NAME) 4444)" == "" ]; then echo "Selenium is not running - launching";$(MAKE) _selenium_launch; fi )
@echo 'Local requirements launch'
dev-examples: _examples ## Launch a local nginx server to ease development.
_examples:
@echo "Starting examples container!"
docker run -d --name $(TEST_DOCKER_EXAMPLES_INSTANCE_NAME) $(DOCKER_EXAMPLES_PARAMETERS) \
-e "LISTEN_PORT=$(EXAMPLES_LISTEN_PORT)" \
-e "APISCHEME=$(APISCHEME)" \
-e "APIHOST=$(APIHOST)" \
-e "APPLICATIONKEY=$(DEV_APPLICATIONKEY)" \
-e "HMACKEY=$(DEV_HMACKEY)" \
$(EXAMPLES_DOCKERREPOSITORY)
@docker run --rm --link $(TEST_DOCKER_EXAMPLES_INSTANCE_NAME):WAITHOST -e "WAIT_PORT=$(EXAMPLES_LISTEN_PORT)" -e "WAIT_SERVICE=Test examples" $(WAITTCP_DOCKERREPOSITORY)
_selenium_launch:
@echo "Starting selenium container selenium_hub_1! Launch a VNC viewer on port 5900 (password is : secret) to view test execution."
docker pull $(SELENIUM_STANDALONE_DOCKERREPOSITORY)
@docker run -d $(DOCKER_SELENIUM_PARAMETERS) --name $(TEST_DOCKER_SELENIUM_INSTANCE_NAME) $(SELENIUM_STANDALONE_DOCKERREPOSITORY)
@docker run --rm --link $(TEST_DOCKER_SELENIUM_INSTANCE_NAME):WAITHOST -e "WAIT_PORT=4444" -e "WAIT_SERVICE=Selenium hub" $(WAITTCP_DOCKERREPOSITORY)
help: ## This help.
@awk 'BEGIN {FS = ":.*?## "} /^[a-zA-Z_-]+:.*?## / {printf "\033[36m%-30s\033[0m %s\n", $$1, $$2}' $(MAKEFILE_LIST)