From f173e89c2d815c78e3ac1834a7eb5087d10358c7 Mon Sep 17 00:00:00 2001
From: Stefan Riepenhausen <stefan.riepenhausen@chefkoch.de>
Date: Thu, 21 Sep 2023 12:18:08 +0200
Subject: [PATCH 01/27] fix command not found

---
 helm.mk | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/helm.mk b/helm.mk
index 963e468..500349c 100644
--- a/helm.mk
+++ b/helm.mk
@@ -14,7 +14,7 @@ ifdef TEST_MODE
 endif
 
 ifdef NAMESPACE
-	K8S_NAMESPACE = $(NAMESPACE)
+	@- K8S_NAMESPACE = $(NAMESPACE)
 endif
 
 ifdef DEBUG_MODE
@@ -47,4 +47,4 @@ endif
 
 
 pull-helm:
-# nop
\ No newline at end of file
+# nop

From 28c66e0399e1bf99c87d3e5ce0c8e83f9cbfe39f Mon Sep 17 00:00:00 2001
From: Stefan Riepenhausen <stefan.riepenhausen@chefkoch.de>
Date: Thu, 21 Sep 2023 12:23:14 +0200
Subject: [PATCH 02/27] fix again variable set

---
 helm.mk | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/helm.mk b/helm.mk
index 500349c..ba4267a 100644
--- a/helm.mk
+++ b/helm.mk
@@ -14,7 +14,7 @@ ifdef TEST_MODE
 endif
 
 ifdef NAMESPACE
-	@- K8S_NAMESPACE = $(NAMESPACE)
+	@ K8S_NAMESPACE =: $(NAMESPACE)
 endif
 
 ifdef DEBUG_MODE

From fda569350e251d511647df4ed1202c6cf8371c06 Mon Sep 17 00:00:00 2001
From: Stefan Riepenhausen <stefan.riepenhausen@chefkoch.de>
Date: Thu, 21 Sep 2023 12:28:56 +0200
Subject: [PATCH 03/27] again, spaces and eval

---
 helm.mk | 5 ++---
 1 file changed, 2 insertions(+), 3 deletions(-)

diff --git a/helm.mk b/helm.mk
index ba4267a..9316e6a 100644
--- a/helm.mk
+++ b/helm.mk
@@ -10,15 +10,14 @@ start-helm:
 
 ifdef TEST_MODE
 	@- echo "Testing chart with 'helm template --debug'"
-    @ envsubst < ${HELM_VALUES_FILE} | helm template ${HELM_CHART_NAME} ${HELM_CHART_PATH} --debug --values -
+	@ envsubst < ${HELM_VALUES_FILE} | helm template ${HELM_CHART_NAME} ${HELM_CHART_PATH} --debug --values -
 endif
 
 ifdef NAMESPACE
-	@ K8S_NAMESPACE =: $(NAMESPACE)
+	K8S_NAMESPACE = $$(NAMESPACE)
 endif
 
 ifdef DEBUG_MODE
-
 	@- echo "\n### deploying helm chart with --debug flag"
 	@- echo "-- DEBUG DEPLOYMENT --------------------"
 	@- echo " "

From 21c5d0c58eeda3c7f43022e1dd3701527cad818b Mon Sep 17 00:00:00 2001
From: Stefan Riepenhausen <stefan.riepenhausen@chefkoch.de>
Date: Thu, 21 Sep 2023 12:45:18 +0200
Subject: [PATCH 04/27] evals

---
 helm.mk | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/helm.mk b/helm.mk
index 9316e6a..f8ba138 100644
--- a/helm.mk
+++ b/helm.mk
@@ -14,7 +14,7 @@ ifdef TEST_MODE
 endif
 
 ifdef NAMESPACE
-	K8S_NAMESPACE = $$(NAMESPACE)
+	@ $(eval K8S_NAMESPACE = $(NAMESPACE))
 endif
 
 ifdef DEBUG_MODE

From cb856b1396e0442b30cd1e45d8cf3da394d5c3e5 Mon Sep 17 00:00:00 2001
From: Andreas Neue <an@dnix.de>
Date: Mon, 16 Oct 2023 09:30:19 +0200
Subject: [PATCH 05/27] cleanup stage

---
 Makefile  | 10 ++++++++--
 README.md |  2 ++
 2 files changed, 10 insertions(+), 2 deletions(-)

diff --git a/Makefile b/Makefile
index c9ba6fc..e5e2871 100644
--- a/Makefile
+++ b/Makefile
@@ -11,12 +11,12 @@ endif
 
 include make-deploy/$(DEPLOY_TYPE).mk
 
-.PHONY: self-update mandatory prerequisites prepare build test deploy pre-deploy post-deploy pre-local post-local upload pull start stop restart reload
+.PHONY: self-update mandatory cleanup prerequisites prepare build test deploy pre-deploy post-deploy pre-local post-local upload pull start stop restart reload
 
 self-update:
 	@- git submodule update --remote
 
-deploy: mandatory prepare build test upload pre-deploy pre-local pull start post-local post-deploy reload
+deploy: mandatory cleanup prepare build test upload pre-deploy pre-local pull start post-local post-deploy reload
 
 mandatory:
 	@- echo "\n### mandatory check"
@@ -33,6 +33,12 @@ endif
 prerequisites:
 	@- echo "\n### prerequisites ..."
 	@- ./prerequisites.sh
+
+cleanup:
+	@- echo "\n### cleanup ..."
+	@- $(foreach host,$(DEPLOY_HOSTS), \
+		ssh $(SSH_USER)@$(host) "cd $(DEPLOY_PATH)/$(DEPLOY_NAME); sh cleanup.sh $(host)"; \
+	)
 	
 prepare:
 	@- echo "\n### preparing ..."
diff --git a/README.md b/README.md
index 183d0ab..ba41aee 100644
--- a/README.md
+++ b/README.md
@@ -54,6 +54,8 @@ Relying only on GNU Make and simple CLI tools makes deployments robust and still
 
 `mandatory`: Checks if all needed variables are set in config.mk.
 
+`cleanup`:  Runs `cleanup.sh` on each remote target, meant to be used to wipe contents of prior installations.
+
 `prepare`: Creates needed directory for the deployment on the target system, sets secure file permissions for `secrets.mk`.
 
 `build`: Calls `build.sh` locally. This is for building purposts, e.g. docker build and push.

From 3bd4805df1ab19e89ddd20e3cbca0dbae77a6612 Mon Sep 17 00:00:00 2001
From: Andreas Neue <an@dnix.de>
Date: Mon, 16 Oct 2023 17:52:08 +0200
Subject: [PATCH 06/27] cleanup stage

---
 Makefile | 5 ++++-
 1 file changed, 4 insertions(+), 1 deletion(-)

diff --git a/Makefile b/Makefile
index e5e2871..751fbf6 100644
--- a/Makefile
+++ b/Makefile
@@ -34,12 +34,15 @@ prerequisites:
 	@- echo "\n### prerequisites ..."
 	@- ./prerequisites.sh
 
+ifdef DEPLOY_CLEANUP
 cleanup:
 	@- echo "\n### cleanup ..."
 	@- $(foreach host,$(DEPLOY_HOSTS), \
+		scp cleanup.sh $(SSH_USER)@$(host):/$(DEPLOY_PATH)/$(DEPLOY_NAME); \
 		ssh $(SSH_USER)@$(host) "cd $(DEPLOY_PATH)/$(DEPLOY_NAME); sh cleanup.sh $(host)"; \
 	)
-	
+endif
+
 prepare:
 	@- echo "\n### preparing ..."
 	@- chmod 600 secrets.mk

From 9cbde1ddbd6215d5b4da66964caa9b432804833b Mon Sep 17 00:00:00 2001
From: Stefan Riepenhausen <stefan.riepenhausen@chefkoch.de>
Date: Thu, 15 Feb 2024 09:57:49 +0100
Subject: [PATCH 07/27] helm type modifications

---
 helm.mk | 12 ++++++++++--
 1 file changed, 10 insertions(+), 2 deletions(-)

diff --git a/helm.mk b/helm.mk
index f8ba138..a1ef5ab 100644
--- a/helm.mk
+++ b/helm.mk
@@ -17,17 +17,24 @@ ifdef NAMESPACE
 	@ $(eval K8S_NAMESPACE = $(NAMESPACE))
 endif
 
+ifdef HELM_REPO_URL
+	@- echo "Helm Repo: $(HELM_REPO_URL)"
+	@ helm repo add $(HELM_CHART_NAME) $(HELM_REPO_URL)
+	@- helm repo update $(HELM_CHART_NAME)
+endif
+
 ifdef DEBUG_MODE
 	@- echo "\n### deploying helm chart with --debug flag"
 	@- echo "-- DEBUG DEPLOYMENT --------------------"
 	@- echo " "
 	@- echo "Namespace: $(K8S_NAMESPACE)"
 	@- echo "Helm Chart: $(HELM_CHART_PATH)"
+	@- echo "Helm Version (use latest if empty): $(HELM_CHART_VERSION)"
 	@- echo "Values File: $(HELM_VALUES_FILE)"
 	@- echo " "
 	@- echo "----------------------------------"
 
-	@ envsubst < $(HELM_VALUES_FILE) | helm upgrade $(HELM_CHART_NAME) $(HELM_CHART_PATH) -n $(K8S_NAMESPACE) --install --debug --wait --values -
+	@ envsubst < $(HELM_VALUES_FILE) | helm upgrade $(HELM_CHART_NAME) $(HELM_CHART_PATH) -n $(K8S_NAMESPACE) --install --debug --wait --values - --version "$(HELM_CHART_VERSION)"
 
 else
 	
@@ -36,11 +43,12 @@ else
 	@- echo " "
 	@- echo "Namespace: $(K8S_NAMESPACE)"
 	@- echo "Helm Chart: $(HELM_CHART_PATH)"
+	@- echo "Helm Version (use latest if empty): $(HELM_CHART_VERSION)"
 	@- echo "Values File: $(HELM_VALUES_FILE)"
 	@- echo " "
 	@- echo "----------------------------------"
 
-	@ envsubst < $(HELM_VALUES_FILE) | helm upgrade $(HELM_CHART_NAME) $(HELM_CHART_PATH) -n $(K8S_NAMESPACE) --install --wait --values -
+	@ envsubst < $(HELM_VALUES_FILE) | helm upgrade $(HELM_CHART_NAME) $(HELM_CHART_PATH) -n $(K8S_NAMESPACE) --install --wait --values - --version "$(HELM_CHART_VERSION)"
 
 endif
 

From a52d5c8ba665f94b8e356a797ad3102181541299 Mon Sep 17 00:00:00 2001
From: Andreas Neue <an@dnix.de>
Date: Fri, 3 May 2024 14:18:33 +0200
Subject: [PATCH 08/27] terraform module

---
 README.md |  8 ++++++++
 tf.mk     | 15 +++++++++++++++
 2 files changed, 23 insertions(+)
 create mode 100644 tf.mk

diff --git a/README.md b/README.md
index ba41aee..dc4693c 100644
--- a/README.md
+++ b/README.md
@@ -133,3 +133,11 @@ systemd. (TBD)
 ##### apt
 
 APT deployment on debian-like distributions.
+
+##### tf
+
+Deploy via Terraform. Config is mostly done with terraform.
+
+`TF_FLAGS`: What you think.
+
+`TF_TARGET`: Limits deployment to `TF_TARGET`.
diff --git a/tf.mk b/tf.mk
new file mode 100644
index 0000000..b06e579
--- /dev/null
+++ b/tf.mk
@@ -0,0 +1,15 @@
+MANDATORY-tf = 
+# tf
+#
+# deploys via tf apply
+#
+start-tf:
+ifdef TF_TARGET
+	terraform apply $(TF_FLAGS) -t $(TF_TARGET)
+else
+	terraform apply $(TF_FLAGS)
+endif
+	
+	
+pull-tf:
+# nop

From af2cad09b44df0bf5f2ef93190ec79dc2219269f Mon Sep 17 00:00:00 2001
From: Stefan Riepenhausen <stefan.riepenhausen@chefkoch.de>
Date: Wed, 5 Jun 2024 09:29:49 +0200
Subject: [PATCH 09/27] Deal with unset docker login

---
 apt.mk                         |  2 +-
 compose-file.mk                | 11 ++++++--
 compose.mk                     | 11 ++++++--
 test.sh                        | 50 ++++++++++++++++++++++++++++++++++
 testing/apt_config.mk          |  6 ++++
 testing/compose_config.mk      |  5 ++++
 testing/compose_file_config.mk |  7 +++++
 testing/docker-compose.yml     |  4 +++
 8 files changed, 91 insertions(+), 5 deletions(-)
 create mode 100755 test.sh
 create mode 100644 testing/apt_config.mk
 create mode 100644 testing/compose_config.mk
 create mode 100644 testing/compose_file_config.mk
 create mode 100644 testing/docker-compose.yml

diff --git a/apt.mk b/apt.mk
index 7afe780..b3099ea 100644
--- a/apt.mk
+++ b/apt.mk
@@ -1,4 +1,4 @@
-MANDATORY-apt = APT_PACKAGES
+MANDATORY-apt = DEPLOY_HOSTS SSH_USER APT_PACKAGES DEPLOY_NAME
 
 pull-apt:
 	# nop
diff --git a/compose-file.mk b/compose-file.mk
index 0d1c7c9..03a194c 100644
--- a/compose-file.mk
+++ b/compose-file.mk
@@ -1,4 +1,8 @@
-MANDATORY-compose-file = DEPLOY_HOSTS DEPLOY_TYPE TAG DEPLOY_COMPOSE_FILE DEPLOY_COMPOSE_PROJECT
+MANDATORY-compose-file = DEPLOY_HOSTS DEPLOY_TYPE SSH_USER DEPLOY_COMPOSE_FILE DEPLOY_COMPOSE_PROJECT
+
+ifndef DOCKER_LOGIN
+DOCKER_LOGIN = 0
+endif
 
 pull-compose-file:
 	@- echo "\n### pulling image(s)"
@@ -9,7 +13,10 @@ pull-compose-file:
 			echo "\n#### perfom docker login with user $(DOCKER_USER) on $(DOCKER_REGISTRY)"; \
 			ssh $(SSH_USER)@$(host) "docker login -u $(DOCKER_USER) -p $(DOCKER_PASS) $(DOCKER_REGISTRY)"; \
 		fi; \
-		ssh $(SSH_USER)@$(host) "docker pull $(DOCKER_IMAGE)"; \
+		if test -n "$(DOCKER_IMAGE)" ; \
+		then \
+			ssh $(SSH_USER)@$(host) "docker pull $(DOCKER_IMAGE)"; \
+		fi; \
 	)
 
 start-compose-file:
diff --git a/compose.mk b/compose.mk
index c9779bf..6de67f8 100644
--- a/compose.mk
+++ b/compose.mk
@@ -1,4 +1,8 @@
-MANDATORY-compose = DEPLOY_HOSTS DEPLOY_TYPE TAG
+MANDATORY-compose = DEPLOY_HOSTS DEPLOY_TYPE SSH_USER DEPLOY_NAME
+
+ifndef DOCKER_LOGIN
+DOCKER_LOGIN = 0
+endif
 
 pull-compose:
 	@- echo "\n### pulling image(s)"
@@ -9,7 +13,10 @@ pull-compose:
 			echo "\n#### perfom docker login with user $(DOCKER_USER) on $(DOCKER_REGISTRY)"; \
 			ssh $(SSH_USER)@$(host) "docker login -u $(DOCKER_USER) -p $(DOCKER_PASS) $(DOCKER_REGISTRY)"; \
 		fi; \
-		ssh $(SSH_USER)@$(host) "docker pull $(DOCKER_IMAGE)"; \
+		if test -n "$(DOCKER_IMAGE)" ; \
+		then \
+			ssh $(SSH_USER)@$(host) "docker pull $(DOCKER_IMAGE)"; \
+		fi; \
 	)
 
 start-compose:
diff --git a/test.sh b/test.sh
new file mode 100755
index 0000000..88d79e1
--- /dev/null
+++ b/test.sh
@@ -0,0 +1,50 @@
+#!/bin/bash
+
+set -e
+
+DIR=$(mktemp -d)
+TESTS=$DIR/make-deploy/testing
+
+function prepdir() {
+  mkdir $DIR/make-deploy
+  cp -r * $DIR/make-deploy
+  cd $DIR
+  ln -s make-deploy/Makefile
+  touch secrets.mk
+  echo "::::::::: testing directory root: $DIR"
+}
+
+function cleandir(){
+  rm -fr $DIR
+  echo "::::::::: cleanup done"
+}
+
+function test_with_minimal_vars_apt(){
+  echo "::::::::: $FUNCNAME ::::::::::::"
+  cp $TESTS/apt_config.mk config.mk
+  make deploy
+}
+
+function test_with_minimal_vars_compose(){
+  echo "::::::::: $FUNCNAME ::::::::::::"
+  cp $TESTS/compose_config.mk config.mk
+  cp $TESTS/docker-compose.yml .
+  make deploy
+  rm -f docker-compose.yml
+}
+
+function test_with_minimal_vars_compose_file(){
+  echo "::::::::: $FUNCNAME ::::::::::::"
+  cp $TESTS/compose_file_config.mk config.mk
+  cp $TESTS/docker-compose.yml .
+  make deploy
+  rm -f docker-compose.yml
+}
+
+prepdir
+
+test_with_minimal_vars_apt
+test_with_minimal_vars_compose
+test_with_minimal_vars_compose_file
+
+cleandir
diff --git a/testing/apt_config.mk b/testing/apt_config.mk
new file mode 100644
index 0000000..444165f
--- /dev/null
+++ b/testing/apt_config.mk
@@ -0,0 +1,6 @@
+DEPLOY_NAME = make-deploy-test-apt
+DEPLOY_PATH = /tmp
+DEPLOY_HOSTS = localhost
+DEPLOY_TYPE = apt
+SSH_USER = $(USER)
+APT_PACKAGES = curl
diff --git a/testing/compose_config.mk b/testing/compose_config.mk
new file mode 100644
index 0000000..7d81afb
--- /dev/null
+++ b/testing/compose_config.mk
@@ -0,0 +1,5 @@
+DEPLOY_NAME = make-deploy-test-compose
+DEPLOY_PATH = /tmp
+DEPLOY_HOSTS = localhost
+DEPLOY_TYPE = compose
+SSH_USER = $(USER)
diff --git a/testing/compose_file_config.mk b/testing/compose_file_config.mk
new file mode 100644
index 0000000..bdd0ab8
--- /dev/null
+++ b/testing/compose_file_config.mk
@@ -0,0 +1,7 @@
+DEPLOY_NAME = make-deploy-test-compose-file
+DEPLOY_PATH = /tmp
+DEPLOY_HOSTS = localhost
+DEPLOY_TYPE = compose-file
+SSH_USER = $(USER)
+DEPLOY_COMPOSE_PROJECT = make-deploy-test-compose-file
+DEPLOY_COMPOSE_FILE = docker-compose.yml
diff --git a/testing/docker-compose.yml b/testing/docker-compose.yml
new file mode 100644
index 0000000..d362336
--- /dev/null
+++ b/testing/docker-compose.yml
@@ -0,0 +1,4 @@
+services:
+  curl:
+    image: "alpine/curl"
+    command: -s -o /dev/null https://www.test.de

From 37bb6e9c128d4d44fdc52d5a90f5603a5114ce4f Mon Sep 17 00:00:00 2001
From: Andreas Neue <an@dnix.de>
Date: Wed, 5 Jun 2024 09:43:19 +0200
Subject: [PATCH 10/27] fix mandatory handling

---
 Makefile   | 2 ++
 apt.mk     | 2 +-
 compose.mk | 4 +++-
 simple.mk  | 3 +--
 tf.mk      | 3 ++-
 5 files changed, 9 insertions(+), 5 deletions(-)

diff --git a/Makefile b/Makefile
index 751fbf6..92622d0 100644
--- a/Makefile
+++ b/Makefile
@@ -1,5 +1,7 @@
 DEPLOY_START_DELAY = 0
 
+MANDATORY = DEPLOY_NAME DEPLOY_HOSTS DEPLOY_PATH SSH_USER
+
 -include secrets.mk
 include config.mk
 -include $(DEPLOY_CONFIG_OVERRIDE)
diff --git a/apt.mk b/apt.mk
index b3099ea..bf30b81 100644
--- a/apt.mk
+++ b/apt.mk
@@ -1,4 +1,4 @@
-MANDATORY-apt = DEPLOY_HOSTS SSH_USER APT_PACKAGES DEPLOY_NAME
+MANDATORY = $(MANDATORY) APT_PACKAGES
 
 pull-apt:
 	# nop
diff --git a/compose.mk b/compose.mk
index 6de67f8..fc68b97 100644
--- a/compose.mk
+++ b/compose.mk
@@ -1,4 +1,6 @@
-MANDATORY-compose = DEPLOY_HOSTS DEPLOY_TYPE SSH_USER DEPLOY_NAME
+ifdef DOCKER_LOGIN
+MANDATORY = $(MANDATORY) DOCKER_USER DOCKER_PASS DOCKER_REGISTRY
+endif
 
 ifndef DOCKER_LOGIN
 DOCKER_LOGIN = 0
diff --git a/simple.mk b/simple.mk
index b95bf0f..40ef637 100644
--- a/simple.mk
+++ b/simple.mk
@@ -1,5 +1,4 @@
-MANDATORY-copy = DEPLOY_TYPE DEPLOY_HOSTS SSH_USER DEPLOY_PATH DEPLOY_NAME
-MANDATORY-simple = $(MANDATORY-copy)
+#MANDATORY = $(MANDATORY) DEPLOY_PATH
 
 # copy
 #
diff --git a/tf.mk b/tf.mk
index b06e579..01816f7 100644
--- a/tf.mk
+++ b/tf.mk
@@ -1,4 +1,5 @@
-MANDATORY-tf = 
+MANDATORY = $(MANDATORY) TF_FLAGS
+
 # tf
 #
 # deploys via tf apply

From e5f6c11ea9ccb0f7c6d79ba028ad26efad16c01f Mon Sep 17 00:00:00 2001
From: Andreas Neue <an@dnix.de>
Date: Wed, 5 Jun 2024 09:45:48 +0200
Subject: [PATCH 11/27] fix the fix

---
 Makefile | 3 ---
 1 file changed, 3 deletions(-)

diff --git a/Makefile b/Makefile
index 92622d0..ae5d17b 100644
--- a/Makefile
+++ b/Makefile
@@ -22,9 +22,6 @@ deploy: mandatory cleanup prepare build test upload pre-deploy pre-local pull st
 
 mandatory:
 	@- echo "\n### mandatory check"
-ifndef MANDATORY-$(DEPLOY_TYPE)
-	$(error MANDATORY-$(DEPLOY_TYPE) is not defined)
-endif
 	@ $(foreach var,$(MANDATORY), \
 		if test -z "${$(var)}"; then \
 			echo "Missing mandatory variable: $(var)"; \

From 35070eff29d4731bf8965c704fe6e549fadd6a8f Mon Sep 17 00:00:00 2001
From: Stefan Riepenhausen <stefan.riepenhausen@chefkoch.de>
Date: Mon, 17 Jun 2024 11:40:27 +0200
Subject: [PATCH 12/27] Update k8s.mk

---
 k8s.mk | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/k8s.mk b/k8s.mk
index 37f712c..a4bfae0 100644
--- a/k8s.mk
+++ b/k8s.mk
@@ -2,7 +2,7 @@
 #
 # deploys k8s
 
-MANDATORY-k8s = K8S_CONTEXT
+MANDATORY = K8S_CONTEXT
 
 start-k8s:
 	@- echo "\n### starting deployment with k8s"

From 380ac9c214821fe878eb0846a1e6a03627701dbd Mon Sep 17 00:00:00 2001
From: Stefan Riepenhausen <stefan.riepenhausen@chefkoch.de>
Date: Mon, 17 Jun 2024 12:10:17 +0200
Subject: [PATCH 13/27] Update kustomize.mk

---
 kustomize.mk | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/kustomize.mk b/kustomize.mk
index 60dacac..0befd79 100644
--- a/kustomize.mk
+++ b/kustomize.mk
@@ -1,4 +1,4 @@
-MANDATORY-kustomize = K8S_CONTEXT KUSTOMIZE_FOLDER NAMESPACE
+MANDATORY = K8S_CONTEXT KUSTOMIZE_FOLDER NAMESPACE
 # kustomize
 #
 # this uses kustomize to install stuff on k8s

From cd9575d0a71cc3643f14dd95f5846f19f2c071da Mon Sep 17 00:00:00 2001
From: Stefan Riepenhausen <stefan.riepenhausen@chefkoch.de>
Date: Mon, 17 Jun 2024 12:11:18 +0200
Subject: [PATCH 14/27] Update swarm.mk

---
 swarm.mk | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/swarm.mk b/swarm.mk
index 913a125..f1ebb27 100644
--- a/swarm.mk
+++ b/swarm.mk
@@ -1,4 +1,4 @@
-MANDATORY-swarm = DEPLOY_HOSTS DEPLOY_TYPE TAG
+MANDATORY = DEPLOY_PATH DEPLOY_NAME DEPLOY_HOSTS DEPLOY_TYPE
 
 pull-swarm:
 

From 938e276821ae0549e0159dcc368a04c5785d7d81 Mon Sep 17 00:00:00 2001
From: Andreas Neue <an@dnix.de>
Date: Mon, 1 Jul 2024 09:02:17 +0200
Subject: [PATCH 15/27] notification for manual deployments

---
 Makefile | 16 +++++++++++++---
 1 file changed, 13 insertions(+), 3 deletions(-)

diff --git a/Makefile b/Makefile
index ae5d17b..cc6be98 100644
--- a/Makefile
+++ b/Makefile
@@ -13,12 +13,12 @@ endif
 
 include make-deploy/$(DEPLOY_TYPE).mk
 
-.PHONY: self-update mandatory cleanup prerequisites prepare build test deploy pre-deploy post-deploy pre-local post-local upload pull start stop restart reload
+.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
 
 self-update:
 	@- git submodule update --remote
 
-deploy: mandatory cleanup prepare build test upload pre-deploy pre-local pull start post-local post-deploy reload
+deploy: mandatory cleanup prepare build test upload pre-deploy pre-local pull start notify post-local post-deploy reload
 
 mandatory:
 	@- echo "\n### mandatory check"
@@ -122,7 +122,17 @@ pull: pull-$(DEPLOY_TYPE)
 start: start-$(DEPLOY_TYPE)
 
 stop: stop-$(DEPLOY_TYPE)
-	
+
+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)
 
 restart: restart-$(DEPLOY_TYPE)

From deb24ec5ae2fe440e5f5f4592a3d662ef8b5fa5f Mon Sep 17 00:00:00 2001
From: Andreas Neue <an@dnix.de>
Date: Mon, 8 Jul 2024 09:11:53 +0200
Subject: [PATCH 16/27] fix broken MANDATORY parsing

---
 compose.mk | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/compose.mk b/compose.mk
index fc68b97..36e23a9 100644
--- a/compose.mk
+++ b/compose.mk
@@ -1,5 +1,5 @@
 ifdef DOCKER_LOGIN
-MANDATORY = $(MANDATORY) DOCKER_USER DOCKER_PASS DOCKER_REGISTRY
+MANDATORY = $(shell printenv MANDATORY) DOCKER_USER DOCKER_PASS DOCKER_REGISTRY
 endif
 
 ifndef DOCKER_LOGIN

From 8f527a16a33ee89b0d5d47765f4ea309f34c8e7e Mon Sep 17 00:00:00 2001
From: Andreas Neue <an@dnix.de>
Date: Mon, 8 Jul 2024 09:31:28 +0200
Subject: [PATCH 17/27] more fixes fixing things to be fixed

---
 apt.mk          | 2 +-
 compose-file.mk | 2 +-
 cron.mk         | 2 +-
 helm.mk         | 2 +-
 k8s.mk          | 2 +-
 kustomize.mk    | 2 +-
 simple.mk       | 8 +++++---
 swarm.mk        | 2 --
 tf.mk           | 2 +-
 9 files changed, 12 insertions(+), 12 deletions(-)

diff --git a/apt.mk b/apt.mk
index bf30b81..0741f74 100644
--- a/apt.mk
+++ b/apt.mk
@@ -1,4 +1,4 @@
-MANDATORY = $(MANDATORY) APT_PACKAGES
+MANDATORY = $(shell printenv MANDATORY) APT_PACKAGES
 
 pull-apt:
 	# nop
diff --git a/compose-file.mk b/compose-file.mk
index 03a194c..37a98d1 100644
--- a/compose-file.mk
+++ b/compose-file.mk
@@ -1,4 +1,4 @@
-MANDATORY-compose-file = DEPLOY_HOSTS DEPLOY_TYPE SSH_USER DEPLOY_COMPOSE_FILE DEPLOY_COMPOSE_PROJECT
+MANDATORY = $(shell printenv MANDATORY) SSH_USER DEPLOY_COMPOSE_FILE DEPLOY_COMPOSE_PROJECT
 
 ifndef DOCKER_LOGIN
 DOCKER_LOGIN = 0
diff --git a/cron.mk b/cron.mk
index f107828..ad5a78d 100644
--- a/cron.mk
+++ b/cron.mk
@@ -1,4 +1,4 @@
-MANDATORY-cron = true
+MANDATORY = $(shell printenv MANDATORY) CRON_USER 
 
 start-cron:
 	@- echo "\n### starting..."
diff --git a/helm.mk b/helm.mk
index a1ef5ab..1fdf5bd 100644
--- a/helm.mk
+++ b/helm.mk
@@ -1,4 +1,4 @@
-MANDATORY-helm = K8S_CONTEXT HELM_CHART_NAME HELM_CHART_PATH HELM_VALUES_FILE NAMESPACE
+MANDATORY = $(shell printenv MANDATORY) K8S_CONTEXT HELM_CHART_NAME HELM_CHART_PATH HELM_VALUES_FILE NAMESPACE
 # helm
 #
 # deploys helm charts on k8s via helm
diff --git a/k8s.mk b/k8s.mk
index a4bfae0..08885ca 100644
--- a/k8s.mk
+++ b/k8s.mk
@@ -2,7 +2,7 @@
 #
 # deploys k8s
 
-MANDATORY = K8S_CONTEXT
+MANDATORY = $(shell printenv MANDATORY) K8S_CONTEXT
 
 start-k8s:
 	@- echo "\n### starting deployment with k8s"
diff --git a/kustomize.mk b/kustomize.mk
index 0befd79..9bdcfdf 100644
--- a/kustomize.mk
+++ b/kustomize.mk
@@ -1,4 +1,4 @@
-MANDATORY = K8S_CONTEXT KUSTOMIZE_FOLDER NAMESPACE
+MANDATORY = $(shell printenv MANDATORY) K8S_CONTEXT KUSTOMIZE_FOLDER NAMESPACE
 # kustomize
 #
 # this uses kustomize to install stuff on k8s
diff --git a/simple.mk b/simple.mk
index 40ef637..8210118 100644
--- a/simple.mk
+++ b/simple.mk
@@ -1,10 +1,12 @@
-#MANDATORY = $(MANDATORY) DEPLOY_PATH
-
-# copy
+# simple 
 #
 # this just rsyncs the stuff to the remote server(s) and runs
 # build.sh, pre-/post-deploy, pre-/post-local, start.sh, etc.
 
+ifndef DEPLOY_StART_DELAY
+DEPLOY_START_DELAY = 0
+endif
+
 pull-simple:
 	# nop
 	
diff --git a/swarm.mk b/swarm.mk
index f1ebb27..45f67b8 100644
--- a/swarm.mk
+++ b/swarm.mk
@@ -1,5 +1,3 @@
-MANDATORY = DEPLOY_PATH DEPLOY_NAME DEPLOY_HOSTS DEPLOY_TYPE
-
 pull-swarm:
 
 start-swarm:
diff --git a/tf.mk b/tf.mk
index 01816f7..df910ed 100644
--- a/tf.mk
+++ b/tf.mk
@@ -1,4 +1,4 @@
-MANDATORY = $(MANDATORY) TF_FLAGS
+MANDATORY = $(shell printenv MANDATORY) TF_FLAGS
 
 # tf
 #

From 1611cc73df5610810724a5d99d5fa004d43fa234 Mon Sep 17 00:00:00 2001
From: Stefan Riepenhausen <stefan.riepenhausen@chefkoch.de>
Date: Thu, 18 Jul 2024 10:25:52 +0200
Subject: [PATCH 18/27] fix mandatory expression namespace

---
 helm.mk | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/helm.mk b/helm.mk
index 1fdf5bd..394fb8c 100644
--- a/helm.mk
+++ b/helm.mk
@@ -1,4 +1,4 @@
-MANDATORY = $(shell printenv MANDATORY) K8S_CONTEXT HELM_CHART_NAME HELM_CHART_PATH HELM_VALUES_FILE NAMESPACE
+MANDATORY = $(shell printenv MANDATORY) K8S_CONTEXT HELM_CHART_NAME HELM_CHART_PATH HELM_VALUES_FILE K8S_NAMESPACE
 # helm
 #
 # deploys helm charts on k8s via helm

From 9753ac7c675dd6715559a70a87c326307776fe6d Mon Sep 17 00:00:00 2001
From: Thomas Schneider <thomas.schneider@chefkoch.de>
Date: Tue, 11 Mar 2025 11:58:41 +0100
Subject: [PATCH 19/27] allow setting individual K8S_MANIFEST_FILENAME

---
 k8s.mk | 5 +++--
 1 file changed, 3 insertions(+), 2 deletions(-)

diff --git a/k8s.mk b/k8s.mk
index 08885ca..0d027a0 100644
--- a/k8s.mk
+++ b/k8s.mk
@@ -3,14 +3,15 @@
 # deploys k8s
 
 MANDATORY = $(shell printenv MANDATORY) K8S_CONTEXT
+K8S_MANIFEST_FILENAME ?= kubernetes.yaml
 
 start-k8s:
 	@- echo "\n### starting deployment with k8s"
 	@- echo "\n### setting kubernetes context to $(K8S_CONTEXT)"
 	@ kubectl config use-context $(K8S_CONTEXT)
 
-	@- echo "\n### run kubectl apply -f kubernetes.yaml and secrets.yaml"
-	@ cat kubernetes.yaml secrets.yaml | envsubst | kubectl apply -f -
+	@- echo "\n### run kubectl apply -f $(K8S_MANIFEST_FILENAME) and secrets.yaml"
+	@ cat $(K8S_MANIFEST_FILENAME) secrets.yaml | envsubst | kubectl apply -f -
 
 pull-k8s:
 # nop

From 99f4568e7e0e0be9d85199bdf440079daf75476b Mon Sep 17 00:00:00 2001
From: Thomas Schneider <thomas.schneider@chefkoch.de>
Date: Mon, 17 Mar 2025 22:56:45 +0100
Subject: [PATCH 20/27] allow additional params for kubectl

---
 k8s.mk | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/k8s.mk b/k8s.mk
index 0d027a0..b439929 100644
--- a/k8s.mk
+++ b/k8s.mk
@@ -11,7 +11,7 @@ start-k8s:
 	@ kubectl config use-context $(K8S_CONTEXT)
 
 	@- echo "\n### run kubectl apply -f $(K8S_MANIFEST_FILENAME) and secrets.yaml"
-	@ cat $(K8S_MANIFEST_FILENAME) secrets.yaml | envsubst | kubectl apply -f -
+	@ cat $(K8S_MANIFEST_FILENAME) secrets.yaml | envsubst | kubectl apply $(K8S_ADDITIONAL_PARAMS) -f -
 
 pull-k8s:
 # nop

From b299948bf87c76e0512abb65b10340ce18e92863 Mon Sep 17 00:00:00 2001
From: Thomas Schneider <thomas.schneider@chefkoch.de>
Date: Wed, 9 Apr 2025 16:11:18 +0200
Subject: [PATCH 21/27] add possibility to add a subpath if docker-compose
 stuff is not in repo root

---
 compose.mk | 8 ++++----
 1 file changed, 4 insertions(+), 4 deletions(-)

diff --git a/compose.mk b/compose.mk
index 36e23a9..fc22dd8 100644
--- a/compose.mk
+++ b/compose.mk
@@ -25,7 +25,7 @@ start-compose:
 	@- echo "\n### starting service(s)"
 	@- $(foreach host,$(DEPLOY_HOSTS), \
 		echo "$(host)"; \
-		ssh $(SSH_USER)@$(host) "cd $(DEPLOY_PATH)/$(DEPLOY_NAME); docker-compose up -d"; \
+		ssh $(SSH_USER)@$(host) "cd $(DEPLOY_PATH)/$(DEPLOY_NAME)$(if$(DEPLOY_SUBPATH),/$(DEPLOY_SUBPATH),); docker-compose up -d"; \
 		sleep $(DEPLOY_START_DELAY); \
 	)
 
@@ -33,16 +33,16 @@ stop-compose:
 	@- echo "\n### stopping service(s)"
 	@- $(foreach host,$(DEPLOY_HOSTS), \
 		echo "$(host)"; \
-		ssh $(SSH_USER)@$(host) "cd $(DEPLOY_PATH)/$(DEPLOY_NAME); docker-compose down"; \
+		ssh $(SSH_USER)@$(host) "cd $(DEPLOY_PATH)/$(DEPLOY_NAME)$(if$(DEPLOY_SUBPATH),/$(DEPLOY_SUBPATH),); docker-compose down"; \
 	)
 		
 logs-compose:
 	@- echo "\n### logs"
-	@- ssh $(SSH_USER)@$(host) "cd $(DEPLOY_PATH)/$(DEPLOY_NAME); docker-compose logs -f $(service)"
+	@- ssh $(SSH_USER)@$(host) "cd $(DEPLOY_PATH)/$(DEPLOY_NAME)$(if$(DEPLOY_SUBPATH),/$(DEPLOY_SUBPATH),); docker-compose logs -f $(service)"
 	
 restart-compose:
 	@- $(foreach host,$(DEPLOY_HOSTS), \
 		echo "$(host)"; \
-		ssh $(SSH_USER)@$(host) "cd $(DEPLOY_PATH)/$(DEPLOY_NAME); docker-compose restart"; \
+		ssh $(SSH_USER)@$(host) "cd $(DEPLOY_PATH)/$(DEPLOY_NAME)$(if$(DEPLOY_SUBPATH),/$(DEPLOY_SUBPATH),); docker-compose restart"; \
 		sleep $(DEPLOY_START_DELAY); \
 	)

From 0071d31d26a8bdb3e8fb0b092d31d087cc4fbed4 Mon Sep 17 00:00:00 2001
From: Thomas <thomas.schneider@chefkoch.de>
Date: Thu, 10 Apr 2025 15:27:07 +0200
Subject: [PATCH 22/27] add possiblity to add subpath in compose (when
 docker-compose file is not in repo root)

---
 compose.mk | 49 ++++++++++++++++++++++++++++---------------------
 1 file changed, 28 insertions(+), 21 deletions(-)

diff --git a/compose.mk b/compose.mk
index fc22dd8..197964d 100644
--- a/compose.mk
+++ b/compose.mk
@@ -7,12 +7,12 @@ DOCKER_LOGIN = 0
 endif
 
 pull-compose:
-	@- echo "\n### pulling image(s)"
-	@- $(foreach host,$(DEPLOY_HOSTS), \
+	@echo "\n### pulling image(s)"
+	$(foreach host,$(DEPLOY_HOSTS), \
 		echo "$(host)"; \
-		if test $(DOCKER_LOGIN) -eq 1 ; \
+		if test "$(DOCKER_LOGIN)" = "1" ; \
 		then \
-			echo "\n#### perfom docker login with user $(DOCKER_USER) on $(DOCKER_REGISTRY)"; \
+			echo "\n#### perform docker login with user $(DOCKER_USER) on $(DOCKER_REGISTRY)"; \
 			ssh $(SSH_USER)@$(host) "docker login -u $(DOCKER_USER) -p $(DOCKER_PASS) $(DOCKER_REGISTRY)"; \
 		fi; \
 		if test -n "$(DOCKER_IMAGE)" ; \
@@ -22,27 +22,34 @@ pull-compose:
 	)
 
 start-compose:
-	@- echo "\n### starting service(s)"
-	@- $(foreach host,$(DEPLOY_HOSTS), \
+	@echo "\n### starting service(s)"
+	$(foreach host,$(DEPLOY_HOSTS), \
 		echo "$(host)"; \
-		ssh $(SSH_USER)@$(host) "cd $(DEPLOY_PATH)/$(DEPLOY_NAME)$(if$(DEPLOY_SUBPATH),/$(DEPLOY_SUBPATH),); docker-compose up -d"; \
+		if test -n "$(DEPLOY_SUBPATH)" ; \
+		then \
+			ssh $(SSH_USER)@$(host) "cd $(DEPLOY_PATH)/$(DEPLOY_NAME)/$(DEPLOY_SUBPATH); docker-compose up -d"; \
+		else \
+			ssh $(SSH_USER)@$(host) "cd $(DEPLOY_PATH)/$(DEPLOY_NAME); docker-compose up -d"; \
+		fi; \
 		sleep $(DEPLOY_START_DELAY); \
 	)
 
-stop-compose:
-	@- echo "\n### stopping service(s)"
-	@- $(foreach host,$(DEPLOY_HOSTS), \
-		echo "$(host)"; \
-		ssh $(SSH_USER)@$(host) "cd $(DEPLOY_PATH)/$(DEPLOY_NAME)$(if$(DEPLOY_SUBPATH),/$(DEPLOY_SUBPATH),); docker-compose down"; \
-	)
-		
 logs-compose:
-	@- echo "\n### logs"
-	@- ssh $(SSH_USER)@$(host) "cd $(DEPLOY_PATH)/$(DEPLOY_NAME)$(if$(DEPLOY_SUBPATH),/$(DEPLOY_SUBPATH),); docker-compose logs -f $(service)"
-	
-restart-compose:
-	@- $(foreach host,$(DEPLOY_HOSTS), \
+	@echo "\n### logs"
+	$(foreach host,$(DEPLOY_HOSTS), \
 		echo "$(host)"; \
-		ssh $(SSH_USER)@$(host) "cd $(DEPLOY_PATH)/$(DEPLOY_NAME)$(if$(DEPLOY_SUBPATH),/$(DEPLOY_SUBPATH),); docker-compose restart"; \
-		sleep $(DEPLOY_START_DELAY); \
+		ssh $(SSH_USER)@$(host) "cd $(DEPLOY_PATH)/$(DEPLOY_NAME); docker-compose logs -f $(service)"; \
 	)
+
+restart-compose:
+	@echo "\n### restarting service(s)"
+	$(foreach host,$(DEPLOY_HOSTS), \
+		echo "$(host)"; \
+		if test -n "$(DEPLOY_SUBPATH)" ; \
+		then \
+			ssh $(SSH_USER)@$(host) "cd $(DEPLOY_PATH)/$(DEPLOY_NAME)/$(DEPLOY_SUBPATH); docker-compose restart"; \
+		else \
+			ssh $(SSH_USER)@$(host) "cd $(DEPLOY_PATH)/$(DEPLOY_NAME); docker-compose restart"; \
+		fi; \
+		sleep $(DEPLOY_START_DELAY); \
+	)
\ No newline at end of file

From ea3f38010c5ae6477c3011f0331e912f1b141f91 Mon Sep 17 00:00:00 2001
From: Thomas Schneider <thomas.schneider@chefkoch.de>
Date: Thu, 10 Apr 2025 15:37:42 +0200
Subject: [PATCH 23/27] add DEPLOY_SUBPATH documentation

---
 README.md | 3 +++
 1 file changed, 3 insertions(+)

diff --git a/README.md b/README.md
index dc4693c..dc64d02 100644
--- a/README.md
+++ b/README.md
@@ -24,6 +24,7 @@ Example `config.mk`:
 	DEPLOY_PATH = /srv
 	DEPLOY_TYPE = compose
 	DEPLOY_HOSTS = server01.example.com server02.example.com
+	DEPLOY_SUBPATH = my-sub-path
 
 	DOCKER_IMAGE = dr.example.com/my-project:latest
 	DOCKER_LOGIN = 1
@@ -36,6 +37,8 @@ Example `secrets.mk`:
     DOCKER_USER = root
     DOCKER_PASS = secret1234
 
+`DEPLOY_SUBPATH` is used to define a location for `DEPLOY_TYPE` = compose that states where the docker-compose.yml is placed at. If that variable is undefined, it is expected to be in projects root.
+
 By setting `DEPLOY_CONFIG_OVERRIDE`, an alternative config can be loaded to override existing configuration settings. This is useful in script calling make deploy or in a `.gitlab-ci.yml` in order to control settings for different targets.
 
 ## Usage

From 27f15d441a8550d23145d524e9dcfb4b934b0d6d Mon Sep 17 00:00:00 2001
From: Andreas Neue <an@dnix.de>
Date: Mon, 14 Apr 2025 10:13:08 +0200
Subject: [PATCH 24/27] introduced DEPLOY_PROJECT_DIR to specify project
 workdir under project path

---
 Makefile   |  3 +++
 compose.mk | 19 +++++--------------
 2 files changed, 8 insertions(+), 14 deletions(-)

diff --git a/Makefile b/Makefile
index cc6be98..59a1159 100644
--- a/Makefile
+++ b/Makefile
@@ -1,4 +1,5 @@
 DEPLOY_START_DELAY = 0
+DEPLOY_PROJECT_DIR =
 
 MANDATORY = DEPLOY_NAME DEPLOY_HOSTS DEPLOY_PATH SSH_USER
 
@@ -11,6 +12,8 @@ ifeq ($(DEPLOY_TYPE), copy)
 	DEPLOY_TYPE = simple
 endif
 
+project_dir = $(DEPLOY_PATH)/$(DEPLOY_NAME)$(DEPLOY_PROJECT_DIR)
+
 include make-deploy/$(DEPLOY_TYPE).mk
 
 .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
diff --git a/compose.mk b/compose.mk
index 197964d..49ca59b 100644
--- a/compose.mk
+++ b/compose.mk
@@ -23,14 +23,10 @@ pull-compose:
 
 start-compose:
 	@echo "\n### starting service(s)"
+	final_path = "$(DEPLOY_PATH)/$(DEPLOY_NAME)$(DEPLOY_PROJECT_DIR)"
 	$(foreach host,$(DEPLOY_HOSTS), \
 		echo "$(host)"; \
-		if test -n "$(DEPLOY_SUBPATH)" ; \
-		then \
-			ssh $(SSH_USER)@$(host) "cd $(DEPLOY_PATH)/$(DEPLOY_NAME)/$(DEPLOY_SUBPATH); docker-compose up -d"; \
-		else \
-			ssh $(SSH_USER)@$(host) "cd $(DEPLOY_PATH)/$(DEPLOY_NAME); docker-compose up -d"; \
-		fi; \
+		ssh $(SSH_USER)@$(host) "cd $(project_dir); docker-compose up -d"; \
 		sleep $(DEPLOY_START_DELAY); \
 	)
 
@@ -38,18 +34,13 @@ logs-compose:
 	@echo "\n### logs"
 	$(foreach host,$(DEPLOY_HOSTS), \
 		echo "$(host)"; \
-		ssh $(SSH_USER)@$(host) "cd $(DEPLOY_PATH)/$(DEPLOY_NAME); docker-compose logs -f $(service)"; \
+		ssh $(SSH_USER)@$(host) "cd $(project_dir); docker-compose logs -f $(service)"; \
 	)
 
 restart-compose:
 	@echo "\n### restarting service(s)"
 	$(foreach host,$(DEPLOY_HOSTS), \
 		echo "$(host)"; \
-		if test -n "$(DEPLOY_SUBPATH)" ; \
-		then \
-			ssh $(SSH_USER)@$(host) "cd $(DEPLOY_PATH)/$(DEPLOY_NAME)/$(DEPLOY_SUBPATH); docker-compose restart"; \
-		else \
-			ssh $(SSH_USER)@$(host) "cd $(DEPLOY_PATH)/$(DEPLOY_NAME); docker-compose restart"; \
-		fi; \
+		ssh $(SSH_USER)@$(host) "cd $(project_dir); docker-compose restart"; \
 		sleep $(DEPLOY_START_DELAY); \
-	)
\ No newline at end of file
+	)

From 105e14a085af3d2d8065950d4fb6aba025061443 Mon Sep 17 00:00:00 2001
From: Andreas Neue <an@dnix.de>
Date: Wed, 16 Apr 2025 09:52:22 +0200
Subject: [PATCH 25/27] removed final_destination in compose.mk

---
 compose.mk | 1 -
 1 file changed, 1 deletion(-)

diff --git a/compose.mk b/compose.mk
index 49ca59b..ec8b6b3 100644
--- a/compose.mk
+++ b/compose.mk
@@ -23,7 +23,6 @@ pull-compose:
 
 start-compose:
 	@echo "\n### starting service(s)"
-	final_path = "$(DEPLOY_PATH)/$(DEPLOY_NAME)$(DEPLOY_PROJECT_DIR)"
 	$(foreach host,$(DEPLOY_HOSTS), \
 		echo "$(host)"; \
 		ssh $(SSH_USER)@$(host) "cd $(project_dir); docker-compose up -d"; \

From 5f6b651e836910589382c515e79f2a373f235434 Mon Sep 17 00:00:00 2001
From: Andreas Neue <an@dnix.de>
Date: Fri, 16 May 2025 09:58:10 +0200
Subject: [PATCH 26/27] changed README.md

---
 README.md | 2 --
 1 file changed, 2 deletions(-)

diff --git a/README.md b/README.md
index dc64d02..ca140d4 100644
--- a/README.md
+++ b/README.md
@@ -2,8 +2,6 @@
 
 A simple Makefile based deployment system.
 
-**make-deploy** was initially hosted at https://git.dnix.de/an/make-deploy. Since it has become heavily used at chefkoch.de for system deployments, and lots of code is committed there, we moved the repo to https://git.chefkoch.net/pub/make-deploy. A mirror still exists at https://git.dnix.de/mirror/make-deploy.
-
 **make-deploy** is licensed under the terms of the MIT-License. See [LICENSE](LICENSE) for info.
 
 ## Installation

From 2599224295e482e74675df5b788547dbf2b14996 Mon Sep 17 00:00:00 2001
From: Andreas Neue <an@dnix.de>
Date: Fri, 16 May 2025 13:28:04 +0200
Subject: [PATCH 27/27] copyright date

---
 LICENSE | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/LICENSE b/LICENSE
index f76e763..33511fc 100644
--- a/LICENSE
+++ b/LICENSE
@@ -1,6 +1,6 @@
 MIT License
 Copyright (c) 2022 Andreas Neue <an@dnix.de>
-Copyright (c) 2022-23 the make-deploy authors (see CONTRIBUTORS)
+Copyright (c) 2022-25 the make-deploy authors (see CONTRIBUTORS)
 
 Permission is hereby granted, free of charge, to any person obtaining a copy of
 this software and associated documentation files (the "Software"), to deal in