forked from nspcc-dev/neofs-dev-env
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Makefile
144 lines (117 loc) · 4.11 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
#!/usr/bin/make -f
SHELL = bash
# Main environment configuration
include .env
# Optional variables with secrets
-include .secrets
# help target
include help.mk
# update NeoFS global config targets
include neofs_config.mk
# Targets to get required artifacts and external resources for each service
include services/*/artifacts.mk
# Targets helpful to prepare service environment
include services/*/prepare.mk
# Services that require artifacts
GET_SVCS = $(shell grep -Rl "get.*:" ./services/* | sort -u | grep artifacts.mk | xargs -I {} dirname {} | xargs basename -a)
# Services that require pulling images
PULL_SVCS = $(shell find ./services -type f -name 'docker-compose.yml' | sort -u | xargs -I {} dirname {} | xargs basename -a)
# List of services to run
START_SVCS = $(shell cat .services | grep -v \\\#)
START_BASIC = $(shell cat .basic_services | grep -v \\\#)
STOP_SVCS = $(shell tac .services | grep -v \\\#)
STOP_BASIC = $(shell tac .basic_services | grep -v \\\#)
# List of hosts available in devenv
HOSTS_LINES = $(shell grep -Rl IPV4_PREFIX ./services/* | grep .hosts)
# Paths to protocol.privnet.yml
MORPH_CHAIN_PROTOCOL = './services/morph_chain/protocol.privnet.yml'
CHAIN_PROTOCOL = './services/chain/protocol.privnet.yml'
# List of grepped environment variables from *.env
GREP_DOTENV = $(shell find . -name '*.env' -exec grep -rhv -e '^\#' -e '^$$' {} + )
# Pull all required Docker images
.PHONY: pull
pull:
$(foreach SVC, $(PULL_SVCS), $(shell cd services/$(SVC) && docker-compose pull))
@:
# Get all services artifacs
.PHONY: get
get: $(foreach SVC, $(GET_SVCS), get.$(SVC))
@:
# Start environment
.PHONY: up
up: up/basic
@$(foreach SVC, $(START_SVCS), $(shell docker-compose -f services/$(SVC)/docker-compose.yml up -d))
@echo "Full NeoFS Developer Environment is ready"
# Build up NeoFS
.PHONY: up/basic
up/basic: get vendor/hosts
@$(foreach SVC, $(START_BASIC), $(shell docker-compose -f services/$(SVC)/docker-compose.yml up -d))
@./bin/tick.sh
@./bin/config.sh string SystemDNS container
@echo "Basic NeoFS Developer Environment is ready"
# Build up certain service
.PHONY: up/%
up/%: get vendor/hosts
@docker-compose -f services/$*/docker-compose.yml up -d
@echo "Developer Environment for $* service is ready"
# Stop environment
.PHONY: down
down: down/add down/basic
@echo "Full NeoFS Developer Environment is down"
.PHONY: down/add
down/add:
$(foreach SVC, $(STOP_SVCS), $(shell docker-compose -f services/$(SVC)/docker-compose.yml down))
# Stop basic environment
.PHONY: down/basic
down/basic:
$(foreach SVC, $(STOP_BASIC), $(shell docker-compose -f services/$(SVC)/docker-compose.yml down))
# Stop certain service
.PHONY: down/%
down/%:
@docker-compose -f services/$*/docker-compose.yml down
.PHONY: vendor/hosts
.ONESHELL:
vendor/hosts:
@for file in $(HOSTS_LINES)
do
while read h
do
echo $${h} | \
sed 's|IPV4_PREFIX|$(IPV4_PREFIX)|g' | \
sed 's|LOCAL_DOMAIN|$(LOCAL_DOMAIN)|g'
done < $${file};
done > $@
# Display changes for /etc/hosts
.PHONY: hosts
hosts: vendor/hosts
@cat vendor/hosts
# Clean-up the environment
.PHONY: clean
.ONESHELL:
clean:
@rm -rf vendor/* services/storage/s04tls.* services/nats/*.pem
@> .int_test.env
@for svc in $(PULL_SVCS)
do
vols=`docker-compose -f services/$${svc}/docker-compose.yml config --volumes`
if [[ ! -z "$${vols}" ]]; then
for vol in $${vols}; do
docker volume rm "$${svc}_$${vol}" 2> /dev/null
done
fi
done
# Generate environment
.PHONY: env
env:
@$(foreach envvar,$(GREP_DOTENV),echo $(envvar);)
@echo MORPH_BLOCK_TIME=$(shell grep 'SecondsPerBlock' $(MORPH_CHAIN_PROTOCOL) | awk '{print $$2}')s
@echo MAINNET_BLOCK_TIME=$(shell grep 'SecondsPerBlock' $(CHAIN_PROTOCOL) | awk '{print $$2}')s
@echo MORPH_MAGIC=$(shell grep 'Magic' $(MORPH_CHAIN_PROTOCOL) | awk '{print $$2}')
# Restart storage nodes with clean volumes
.PHONY: restart.storage-clean
restart.storage-clean:
@docker-compose -f ./services/storage/docker-compose.yml down
@$(foreach vol, \
$(shell docker-compose -f services/storage/docker-compose.yml config --volumes),\
docker volume rm storage_$(vol);)
@docker-compose -f ./services/storage/docker-compose.yml up -d