From 2f72c0bb350762b570c256a38bd1aaf9fddd3b9b Mon Sep 17 00:00:00 2001
From: Thomas <thomas.schneider@chefkoch.de>
Date: Fri, 22 Sep 2023 09:41:40 +0200
Subject: [PATCH 1/2] add --atomic flag and ROLLBACK_MODE

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

diff --git a/helm.mk b/helm.mk
index 963e468..e0751e3 100644
--- a/helm.mk
+++ b/helm.mk
@@ -28,7 +28,20 @@ ifdef DEBUG_MODE
 	@- 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 --atomic --debug --wait --values -
+
+ifdef ROLLBACK_MODE
+
+	@- echo "\n### rollback helm chart"
+	@- echo "-- DEBUG DEPLOYMENT --------------------"
+	@- echo " "
+	@- echo "Namespace: $(K8S_NAMESPACE)"
+	@- echo "Helm Chart: $(HELM_CHART_PATH)"
+	@- echo "Helm Release: $(HELM_CHART_NAME)"
+	@- echo " "
+	@- echo "----------------------------------"
+
+	@ helm rollback -n ${HELM_NAMESPACE} ${HELM_CHART_NAME}
 
 else
 	
@@ -41,7 +54,7 @@ else
 	@- 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 --atomic --wait --values -
 
 endif
 

From 7fe14dc83dc464a4a087c52f021200c89f5b9b6d Mon Sep 17 00:00:00 2001
From: Thomas <thomas.schneider@chefkoch.de>
Date: Thu, 10 Apr 2025 15:22:00 +0200
Subject: [PATCH 2/2] allow subpath for compose deployments

---
 compose.mk | 62 ++++++++++++++++++++++++++++++++++--------------------
 1 file changed, 39 insertions(+), 23 deletions(-)

diff --git a/compose.mk b/compose.mk
index c9779bf..197964d 100644
--- a/compose.mk
+++ b/compose.mk
@@ -1,39 +1,55 @@
-MANDATORY-compose = DEPLOY_HOSTS DEPLOY_TYPE TAG
+ifdef DOCKER_LOGIN
+MANDATORY = $(shell printenv MANDATORY) DOCKER_USER DOCKER_PASS DOCKER_REGISTRY
+endif
+
+ifndef DOCKER_LOGIN
+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; \
-		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:
-	@- 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); 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); docker-compose down"; \
-	)
-		
 logs-compose:
-	@- echo "\n### logs"
-	@- ssh $(SSH_USER)@$(host) "cd $(DEPLOY_PATH)/$(DEPLOY_NAME); 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); 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