make-deploy/Makefile

150 lines
3.7 KiB
Makefile
Raw Permalink Normal View History

DEPLOY_START_DELAY = 0
2024-06-05 07:43:19 +00:00
MANDATORY = DEPLOY_NAME DEPLOY_HOSTS DEPLOY_PATH SSH_USER
-include secrets.mk
include config.mk
2023-01-04 11:05:26 +00:00
-include $(DEPLOY_CONFIG_OVERRIDE)
# copy ist jetzt simple
ifeq ($(DEPLOY_TYPE), copy)
DEPLOY_TYPE = simple
endif
2023-01-04 11:26:52 +00:00
include make-deploy/$(DEPLOY_TYPE).mk
2022-07-08 17:44:23 +00:00
2024-07-01 07:02:17 +00:00
.PHONY: self-update mandatory cleanup prerequisites prepare build test deploy pre-deploy post-deploy pre-local post-local upload pull start stop restart reload notify
2022-07-03 21:06:54 +00:00
2022-07-04 15:43:57 +00:00
self-update:
@- git submodule update --remote
2022-11-25 09:16:08 +00:00
2024-07-01 07:02:17 +00:00
deploy: mandatory cleanup prepare build test upload pre-deploy pre-local pull start notify post-local post-deploy reload
2022-12-20 14:27:50 +00:00
mandatory:
@- echo "\n### mandatory check"
@ $(foreach var,$(MANDATORY), \
if test -z "${$(var)}"; then \
echo "Missing mandatory variable: $(var)"; \
exit 1; \
2023-05-10 08:39:04 +00:00
fi; \
2022-12-20 14:27:50 +00:00
)
2022-11-25 09:16:08 +00:00
2023-01-04 11:05:26 +00:00
prerequisites:
@- echo "\n### prerequisites ..."
@- ./prerequisites.sh
2023-10-16 07:30:19 +00:00
2023-10-16 15:52:08 +00:00
ifdef DEPLOY_CLEANUP
2023-10-16 07:30:19 +00:00
cleanup:
@- echo "\n### cleanup ..."
@- $(foreach host,$(DEPLOY_HOSTS), \
2023-10-16 15:52:08 +00:00
scp cleanup.sh $(SSH_USER)@$(host):/$(DEPLOY_PATH)/$(DEPLOY_NAME); \
2023-10-16 07:30:19 +00:00
ssh $(SSH_USER)@$(host) "cd $(DEPLOY_PATH)/$(DEPLOY_NAME); sh cleanup.sh $(host)"; \
)
2023-10-16 15:52:08 +00:00
endif
prepare:
@- echo "\n### preparing ..."
2023-05-10 08:39:04 +00:00
@- chmod 600 secrets.mk
@- $(foreach host,$(DEPLOY_HOSTS), \
ssh $(SSH_USER)@$(host) "cd $(DEPLOY_PATH); mkdir $(DEPLOY_NAME)"; \
)
2022-11-25 09:16:08 +00:00
build:
ifneq (,$(wildcard build.sh))
@- echo "\n### running build script"
2022-11-25 09:56:54 +00:00
@ ./build.sh
2022-11-25 09:16:08 +00:00
else
@- echo "\n### no build script found"
endif
test:
ifneq (,$(wildcard test.sh))
@- echo "\n### running test script"
2022-11-25 09:56:54 +00:00
@ ./test.sh
2022-11-25 09:16:08 +00:00
else
@- echo "\n### no test script found"
endif
2022-07-03 21:06:54 +00:00
2022-09-29 08:25:43 +00:00
pre-deploy:
ifdef DEPLOY_HOSTS
@- echo "\n### running pre-deploy script(s)"
2022-09-29 08:25:43 +00:00
@- $(foreach host,$(DEPLOY_HOSTS), \
ssh $(SSH_USER)@$(host) "cd $(DEPLOY_PATH)/$(DEPLOY_NAME); sh pre-deploy.sh $(host); sh pre-deploy_$(host).sh"; \
2022-09-29 08:25:43 +00:00
)
endif
2022-09-29 08:25:43 +00:00
post-deploy:
ifdef DEPLOY_HOSTS
@- echo "\n### running post-deploy script(s)"
2022-09-29 08:25:43 +00:00
@- $(foreach host,$(DEPLOY_HOSTS), \
ssh $(SSH_USER)@$(host) "cd $(DEPLOY_PATH)/$(DEPLOY_NAME); sh post-deploy.sh $(host); sh post-deploy_$(host).sh"; \
2022-09-29 08:25:43 +00:00
)
endif
2022-10-05 14:02:54 +00:00
pre-local:
ifneq (,$(wildcard pre-local.sh))
2022-10-05 14:02:54 +00:00
@- echo "\n### running pre-local script"
@- $(foreach host,$(DEPLOY_HOSTS), \
./pre-local.sh $(host); \
)
else
@- echo "\n### no pre-local script found"
endif
2022-10-05 14:02:54 +00:00
post-local:
ifneq (,$(wildcard post-local.sh))
@- echo "\n### running post-local script"
@- $(foreach host,$(DEPLOY_HOSTS), \
./post-local.sh $(host); \
)
else
@- echo "\n### no post-local script found"
endif
2022-07-03 21:06:54 +00:00
upload:
ifdef DEPLOY_HOSTS
2022-07-03 21:06:54 +00:00
@- echo "\n### uploading files"
@- $(foreach host,$(DEPLOY_HOSTS), \
2022-07-08 17:44:23 +00:00
ssh $(SSH_USER)@$(host) "mkdir -p $(DEPLOY_PATH)/$(DEPLOY_NAME)"; \
rsync_xtra=`cat .rsync`; \
rsync_xtra_host=`cat .rsync_$(host)`; \
param="-ravv"; \
param="$$param $$rsync_xtra"; \
param="$$param $$rsync_xtra_host"; \
param="$$param --exclude '*~' --exclude '.git*' --exclude '*.swp' . $(SSH_USER)@$(host):$(DEPLOY_PATH)/$(DEPLOY_NAME)"; \
eval rsync $$param; \
2023-06-05 09:40:16 +00:00
ssh $(SSH_USER)@$(host) "cd $(DEPLOY_PATH)/$(DEPLOY_NAME) && chmod o-r .env secrets*"; \
2022-07-03 21:06:54 +00:00
)
endif
2022-07-03 21:06:54 +00:00
2022-07-04 21:33:58 +00:00
pull: pull-$(DEPLOY_TYPE)
2022-07-03 21:06:54 +00:00
start: start-$(DEPLOY_TYPE)
stop: stop-$(DEPLOY_TYPE)
2024-07-01 07:02:17 +00:00
notify:
ifdef DEPLOY_NOTIFY_HOSTS
ifdef DEPLOY_NOTIFY_MAIL
ifdef DEPLOY_NOTIFY_MSG
@- echo "\n### notify"
@- echo "$$DEPLOY_NOTIFY_MSG :: Please deploy manually on following hosts: $$DEPLOY_NOTIFY_HOSTS" | mail -s "make-deploy notification" $(DEPLOY_MAIL)
endif
endif
endif
logs: logs-$(DEPLOY_TYPE)
2022-07-03 21:06:54 +00:00
restart: restart-$(DEPLOY_TYPE)
reload:
2022-11-25 09:16:08 +00:00
ifneq (,$(wildcard reload.sh))
@- echo "\n### reloading ..."
@- $(foreach host,$(DEPLOY_HOSTS), \
2022-11-24 12:36:25 +00:00
echo "### reloading service on $(host)"; \
2022-11-24 12:58:07 +00:00
ssh $(SSH_USER)@$(host) "cd $(DEPLOY_PATH)/$(DEPLOY_NAME); ./reload.sh"; \
)
2022-11-25 09:16:08 +00:00
else
@- echo "\n### no reload script found"
endif