2020-07-10 15:14:30 +00:00
|
|
|
#!/usr/bin/make -f
|
2020-09-25 20:36:46 +00:00
|
|
|
SHELL = bash
|
2020-07-10 15:14:30 +00:00
|
|
|
|
2020-09-25 20:36:46 +00:00
|
|
|
# Main environment configuration
|
2020-07-10 15:14:30 +00:00
|
|
|
include .env
|
2020-09-25 20:36:46 +00:00
|
|
|
|
|
|
|
# Optional variables with secrests
|
2020-07-10 15:14:30 +00:00
|
|
|
-include .secrets
|
|
|
|
|
2020-09-25 20:36:46 +00:00
|
|
|
# help target
|
2020-07-10 15:14:30 +00:00
|
|
|
include help.mk
|
|
|
|
|
2020-09-25 20:36:46 +00:00
|
|
|
# Targets to get required artifacts and external resources for each service
|
2020-07-10 15:14:30 +00:00
|
|
|
include services/*/artifacts.mk
|
|
|
|
|
2020-10-23 15:59:21 +00:00
|
|
|
# Targets helpful to prepare service environment
|
|
|
|
include services/*/prepare.mk
|
|
|
|
|
2020-07-10 15:14:30 +00:00
|
|
|
# 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)
|
|
|
|
|
2020-09-25 20:36:46 +00:00
|
|
|
# List of services to run
|
2020-09-22 13:08:06 +00:00
|
|
|
START_SVCS = $(shell cat .services | grep -v \\\#)
|
|
|
|
STOP_SVCS = $(shell tac .services | grep -v \\\#)
|
2020-07-10 15:14:30 +00:00
|
|
|
|
2020-09-25 20:36:46 +00:00
|
|
|
# List of hosts available in devenv
|
2020-07-10 15:14:30 +00:00
|
|
|
HOSTS_LINES = $(shell grep -Rl IPV4_PREFIX ./services/* | grep .hosts)
|
|
|
|
|
2020-09-22 13:08:06 +00:00
|
|
|
|
2020-07-10 15:14:30 +00:00
|
|
|
# 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))
|
|
|
|
@:
|
|
|
|
|
2020-09-25 20:36:46 +00:00
|
|
|
# Start environment
|
2020-07-10 15:14:30 +00:00
|
|
|
.PHONY: up
|
2020-09-24 09:34:19 +00:00
|
|
|
up: get vendor/hosts
|
2020-07-10 15:14:30 +00:00
|
|
|
$(foreach SVC, $(START_SVCS), $(shell docker-compose -f services/$(SVC)/docker-compose.yml up -d))
|
|
|
|
|
2020-09-25 20:36:46 +00:00
|
|
|
# Stop environment
|
2020-07-10 15:14:30 +00:00
|
|
|
.PHONY: down
|
|
|
|
down:
|
|
|
|
$(foreach SVC, $(STOP_SVCS), $(shell docker-compose -f services/$(SVC)/docker-compose.yml down))
|
|
|
|
|
2020-09-24 09:34:19 +00:00
|
|
|
.PHONY: vendor/hosts
|
2020-09-22 08:47:39 +00:00
|
|
|
.ONESHELL:
|
2020-09-24 09:34:19 +00:00
|
|
|
vendor/hosts:
|
2020-11-30 10:14:47 +00:00
|
|
|
@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}; \
|
2020-09-24 09:34:19 +00:00
|
|
|
done > $@
|
|
|
|
|
|
|
|
# Display changes for /etc/hosts
|
|
|
|
.PHONY: hosts
|
|
|
|
hosts: vendor/hosts
|
|
|
|
@cat vendor/hosts
|