From 7045e3756412d203098ffac6580d88b861ce9923 Mon Sep 17 00:00:00 2001 From: Andreas Neue Date: Mon, 21 Aug 2023 15:03:35 +0200 Subject: [PATCH 01/33] include additional rsync options (.rsync and .rsync_), mostly meant for additional filters in addition to the defaults --- Makefile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Makefile b/Makefile index 973b289..e04f7d6 100644 --- a/Makefile +++ b/Makefile @@ -98,7 +98,7 @@ ifdef DEPLOY_HOSTS @- echo "\n### uploading files" @- $(foreach host,$(DEPLOY_HOSTS), \ ssh $(SSH_USER)@$(host) "mkdir -p $(DEPLOY_PATH)/$(DEPLOY_NAME)"; \ - rsync -rav --exclude '*~' --exclude '.git*' --exclude '*.swp' . $(SSH_USER)@$(host):$(DEPLOY_PATH)/$(DEPLOY_NAME); \ + rsync -rav $(cat .rsync) $(cat .rsync_$(host)) --exclude '*~' --exclude '.git*' --exclude '*.swp' . $(SSH_USER)@$(host):$(DEPLOY_PATH)/$(DEPLOY_NAME); \ ssh $(SSH_USER)@$(host) "cd $(DEPLOY_PATH)/$(DEPLOY_NAME) && chmod o-r .env secrets*"; \ ) endif From 575402c7a8407a228c23110bf3945137d668cba8 Mon Sep 17 00:00:00 2001 From: Andreas Neue Date: Tue, 22 Aug 2023 13:36:12 +0200 Subject: [PATCH 02/33] include additional rsync options in .rsync and .rsync_HOSTNAME, mostly meant for additional filters in addition to the defaults --- Makefile | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/Makefile b/Makefile index e04f7d6..eb46931 100644 --- a/Makefile +++ b/Makefile @@ -98,7 +98,13 @@ ifdef DEPLOY_HOSTS @- echo "\n### uploading files" @- $(foreach host,$(DEPLOY_HOSTS), \ ssh $(SSH_USER)@$(host) "mkdir -p $(DEPLOY_PATH)/$(DEPLOY_NAME)"; \ - rsync -rav $(cat .rsync) $(cat .rsync_$(host)) --exclude '*~' --exclude '.git*' --exclude '*.swp' . $(SSH_USER)@$(host):$(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; \ ssh $(SSH_USER)@$(host) "cd $(DEPLOY_PATH)/$(DEPLOY_NAME) && chmod o-r .env secrets*"; \ ) endif From 47c0d2f4b1ec9e3e91f15d6317c495d5732a335c Mon Sep 17 00:00:00 2001 From: Andreas Neue Date: Tue, 22 Aug 2023 13:37:36 +0200 Subject: [PATCH 03/33] include additional rsync options in .rsync and .rsync_HOSTNAME, mostly meant for additional filters in addition to the defaults --- Makefile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Makefile b/Makefile index eb46931..c9ba6fc 100644 --- a/Makefile +++ b/Makefile @@ -103,7 +103,7 @@ ifdef DEPLOY_HOSTS 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)"; \ + param="$$param --exclude '*~' --exclude '.git*' --exclude '*.swp' . $(SSH_USER)@$(host):$(DEPLOY_PATH)/$(DEPLOY_NAME)"; \ eval rsync $$param; \ ssh $(SSH_USER)@$(host) "cd $(DEPLOY_PATH)/$(DEPLOY_NAME) && chmod o-r .env secrets*"; \ ) From bb5a388c4f4328dcbf792640654fdec633c5140a Mon Sep 17 00:00:00 2001 From: Thomas Date: Fri, 15 Sep 2023 08:44:44 +0200 Subject: [PATCH 04/33] add --debug possibility to helm deploy --- helm.mk | 19 +++++++++++++++++-- 1 file changed, 17 insertions(+), 2 deletions(-) diff --git a/helm.mk b/helm.mk index a50495e..963e468 100644 --- a/helm.mk +++ b/helm.mk @@ -16,6 +16,21 @@ endif ifdef NAMESPACE K8S_NAMESPACE = $(NAMESPACE) 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 "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 - + +else @- echo "\n### deploying helm chart" @- echo "-- DEPLOYMENT --------------------" @@ -28,8 +43,8 @@ endif @ envsubst < $(HELM_VALUES_FILE) | helm upgrade $(HELM_CHART_NAME) $(HELM_CHART_PATH) -n $(K8S_NAMESPACE) --install --wait --values - - +endif pull-helm: -# nop +# nop \ No newline at end of file From 96fa48f775241a25ead5665c6352221aa936075a Mon Sep 17 00:00:00 2001 From: Andreas Neue Date: Wed, 20 Sep 2023 10:57:44 +0200 Subject: [PATCH 05/33] first take on kubectl apply with multi file manifests --- k8s.mk | 20 +++++++++++++++++++- 1 file changed, 19 insertions(+), 1 deletion(-) diff --git a/k8s.mk b/k8s.mk index 37f712c..c965a5d 100644 --- a/k8s.mk +++ b/k8s.mk @@ -4,13 +4,31 @@ MANDATORY-k8s = K8S_CONTEXT +k8s_fetch_manifest = \ + if [ $(1) == "http*" ]; then \ + curl -o $(2) $(1) \ + else \ + cp $(1) $(2) \ + fi + 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 - + @- cat kubernetes.yaml secrets.yaml >_manifest.yaml + +ifdef K8S_MANIFESTS + @- $(foreach file,$(K8S_MANIFESTS), \ + $(call k8s_fetch_manifest($(file),"_tmpfile.yaml")); \ + cat _tmpfile.yaml >>_manifest.yaml; \ + rm _tmpfile.yaml; \ + ) +endif + + @ cat _manifest.yaml | envsubst | kubectl apply -f - + @- rm _manifest.yaml pull-k8s: # nop From 435b2f9fcc46314038f14c38d7da2afe50251b88 Mon Sep 17 00:00:00 2001 From: Andreas Neue Date: Wed, 20 Sep 2023 14:11:20 +0200 Subject: [PATCH 06/33] second take on kubectl apply with multi file manifests --- k8s.mk | 30 ++++++++++++++++-------------- 1 file changed, 16 insertions(+), 14 deletions(-) diff --git a/k8s.mk b/k8s.mk index c965a5d..bc962fb 100644 --- a/k8s.mk +++ b/k8s.mk @@ -4,28 +4,30 @@ MANDATORY-k8s = K8S_CONTEXT -k8s_fetch_manifest = \ - if [ $(1) == "http*" ]; then \ - curl -o $(2) $(1) \ - else \ - cp $(1) $(2) \ - fi - +start-k8s: SHELL:=/bin/bash start-k8s: - @- echo "\n### starting deployment with k8s" - @- echo "\n### setting kubernetes context to $(K8S_CONTEXT)" - @ kubectl config use-context $(K8S_CONTEXT) + @- echo "### starting deployment with k8s" + @- echo "### setting kubernetes context to $(K8S_CONTEXT)" + #@ kubectl config use-context $(K8S_CONTEXT) - @- echo "\n### run kubectl apply -f kubernetes.yaml and secrets.yaml" + @- echo "### run kubectl apply -f kubernetes.yaml and secrets.yaml" @- cat kubernetes.yaml secrets.yaml >_manifest.yaml ifdef K8S_MANIFESTS - @- $(foreach file,$(K8S_MANIFESTS), \ - $(call k8s_fetch_manifest($(file),"_tmpfile.yaml")); \ + @- echo "\n%%%DEBUG1" + @- echo $(K8S_MANIFESTS) + @- for file in $(K8S_MANIFESTS); do \ + if [[ $$file == http* ]] ; \ + then \ + curl -o _tmpfile.yaml $$file; \ + else \ + cp $$file _tmpfile.yaml; \ + fi; \ cat _tmpfile.yaml >>_manifest.yaml; \ rm _tmpfile.yaml; \ - ) + done endif + @- echo "\n%%%DEBUG22" @ cat _manifest.yaml | envsubst | kubectl apply -f - @- rm _manifest.yaml From f173e89c2d815c78e3ac1834a7eb5087d10358c7 Mon Sep 17 00:00:00 2001 From: Stefan Riepenhausen Date: Thu, 21 Sep 2023 12:18:08 +0200 Subject: [PATCH 07/33] 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 Date: Thu, 21 Sep 2023 12:23:14 +0200 Subject: [PATCH 08/33] 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 Date: Thu, 21 Sep 2023 12:28:56 +0200 Subject: [PATCH 09/33] 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 Date: Thu, 21 Sep 2023 12:45:18 +0200 Subject: [PATCH 10/33] 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 Date: Mon, 16 Oct 2023 09:30:19 +0200 Subject: [PATCH 11/33] 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 Date: Mon, 16 Oct 2023 17:52:08 +0200 Subject: [PATCH 12/33] 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 Date: Thu, 15 Feb 2024 09:57:49 +0100 Subject: [PATCH 13/33] 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 Date: Fri, 3 May 2024 14:18:33 +0200 Subject: [PATCH 14/33] 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 Date: Wed, 5 Jun 2024 09:29:49 +0200 Subject: [PATCH 15/33] 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 Date: Wed, 5 Jun 2024 09:43:19 +0200 Subject: [PATCH 16/33] 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 Date: Wed, 5 Jun 2024 09:45:48 +0200 Subject: [PATCH 17/33] 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 Date: Mon, 17 Jun 2024 11:40:27 +0200 Subject: [PATCH 18/33] 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 Date: Mon, 17 Jun 2024 12:10:17 +0200 Subject: [PATCH 19/33] 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 Date: Mon, 17 Jun 2024 12:11:18 +0200 Subject: [PATCH 20/33] 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 Date: Mon, 1 Jul 2024 09:02:17 +0200 Subject: [PATCH 21/33] 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 Date: Mon, 8 Jul 2024 09:11:53 +0200 Subject: [PATCH 22/33] 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 Date: Mon, 8 Jul 2024 09:31:28 +0200 Subject: [PATCH 23/33] 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 Date: Thu, 18 Jul 2024 10:25:52 +0200 Subject: [PATCH 24/33] 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 Date: Tue, 11 Mar 2025 11:58:41 +0100 Subject: [PATCH 25/33] 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 Date: Mon, 17 Mar 2025 22:56:45 +0100 Subject: [PATCH 26/33] 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 Date: Wed, 9 Apr 2025 16:11:18 +0200 Subject: [PATCH 27/33] 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 Date: Thu, 10 Apr 2025 15:27:07 +0200 Subject: [PATCH 28/33] 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 Date: Thu, 10 Apr 2025 15:37:42 +0200 Subject: [PATCH 29/33] 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 Date: Mon, 14 Apr 2025 10:13:08 +0200 Subject: [PATCH 30/33] 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 Date: Wed, 16 Apr 2025 09:52:22 +0200 Subject: [PATCH 31/33] 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 Date: Fri, 16 May 2025 09:58:10 +0200 Subject: [PATCH 32/33] 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 Date: Fri, 16 May 2025 13:28:04 +0200 Subject: [PATCH 33/33] 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 -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