diff --git a/LICENSE b/LICENSE index 33511fc..f76e763 100644 --- a/LICENSE +++ b/LICENSE @@ -1,6 +1,6 @@ MIT License Copyright (c) 2022 Andreas Neue -Copyright (c) 2022-25 the make-deploy authors (see CONTRIBUTORS) +Copyright (c) 2022-23 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 diff --git a/Makefile b/Makefile index 9b9a703..751fbf6 100644 --- a/Makefile +++ b/Makefile @@ -1,7 +1,4 @@ DEPLOY_START_DELAY = 0 -DEPLOY_PROJECT_DIR = - -MANDATORY = DEPLOY_NAME DEPLOY_HOSTS DEPLOY_PATH SSH_USER -include secrets.mk include config.mk @@ -12,19 +9,20 @@ 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 +.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 cleanup prepare build test upload pre-deploy pre-local pull start notify 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" +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)"; \ @@ -39,19 +37,17 @@ prerequisites: ifdef DEPLOY_CLEANUP cleanup: @- echo "\n### cleanup ..." - @ $(foreach host,$(DEPLOY_HOSTS), \ - echo "#host: $(host)"; \ + @- $(foreach host,$(DEPLOY_HOSTS), \ scp cleanup.sh $(SSH_USER)@$(host):/$(DEPLOY_PATH)/$(DEPLOY_NAME); \ - if [ -e cleanup.sh ]; then ssh $(SSH_USER)@$(host) "cd $(DEPLOY_PATH)/$(DEPLOY_NAME); sh cleanup.sh $(host)"; fi; \ + ssh $(SSH_USER)@$(host) "cd $(DEPLOY_PATH)/$(DEPLOY_NAME); sh cleanup.sh $(host)"; \ ) endif prepare: @- echo "\n### preparing ..." @- chmod 600 secrets.mk - @ $(foreach host,$(DEPLOY_HOSTS), \ - echo "#host: $(host)"; \ - ssh $(SSH_USER)@$(host) "cd $(DEPLOY_PATH); if [ ! -d $(DEPLOY_NAME) ] ; then mkdir $(DEPLOY_NAME); fi"; \ + @- $(foreach host,$(DEPLOY_HOSTS), \ + ssh $(SSH_USER)@$(host) "cd $(DEPLOY_PATH); mkdir $(DEPLOY_NAME)"; \ ) build: @@ -73,28 +69,23 @@ endif pre-deploy: ifdef DEPLOY_HOSTS @- echo "\n### running pre-deploy script(s)" - @ $(foreach host,$(DEPLOY_HOSTS), \ - echo "#host: $(host)"; \ - if [ -e pre-deploy.sh ]; then ssh $(SSH_USER)@$(host) "cd $(DEPLOY_PATH)/$(DEPLOY_NAME); sh pre-deploy.sh $(host)"; fi; \ - if [ -e pre-deploy_$(host).sh ]; then ssh $(SSH_USER)@$(host) "cd $(DEPLOY_PATH)/$(DEPLOY_NAME); sh pre-deploy_$(host).sh"; fi; \ + @- $(foreach host,$(DEPLOY_HOSTS), \ + ssh $(SSH_USER)@$(host) "cd $(DEPLOY_PATH)/$(DEPLOY_NAME); sh pre-deploy.sh $(host); sh pre-deploy_$(host).sh"; \ ) endif post-deploy: ifdef DEPLOY_HOSTS @- echo "\n### running post-deploy script(s)" - @ $(foreach host,$(DEPLOY_HOSTS), \ - echo "#host: $(host)"; \ - if [ -e post-deploy.sh ]; then ssh $(SSH_USER)@$(host) "cd $(DEPLOY_PATH)/$(DEPLOY_NAME); sh post-deploy.sh $(host)"; fi; \ - if [ -e post-deploy_$(host).sh ]; then ssh $(SSH_USER)@$(host) "cd $(DEPLOY_PATH)/$(DEPLOY_NAME); sh post-deploy_$(host).sh"; fi; \ + @- $(foreach host,$(DEPLOY_HOSTS), \ + ssh $(SSH_USER)@$(host) "cd $(DEPLOY_PATH)/$(DEPLOY_NAME); sh post-deploy.sh $(host); sh post-deploy_$(host).sh"; \ ) endif pre-local: ifneq (,$(wildcard pre-local.sh)) @- echo "\n### running pre-local script" - @ $(foreach host,$(DEPLOY_HOSTS), \ - echo "#host: $(host)"; \ + @- $(foreach host,$(DEPLOY_HOSTS), \ ./pre-local.sh $(host); \ ) else @@ -104,8 +95,7 @@ endif post-local: ifneq (,$(wildcard post-local.sh)) @- echo "\n### running post-local script" - @ $(foreach host,$(DEPLOY_HOSTS), \ - echo "#host: $(host)"; \ + @- $(foreach host,$(DEPLOY_HOSTS), \ ./post-local.sh $(host); \ ) else @@ -115,17 +105,16 @@ endif upload: ifdef DEPLOY_HOSTS @- echo "\n### uploading files" - @$(foreach host,$(DEPLOY_HOSTS), \ - echo "#host: $(host)"; \ - ssh $(SSH_USER)@$(host) "if [ ! -d $(DEPLOY_PATH)/$(DEPLOY_NAME) ]; then mkdir -p $(DEPLOY_PATH)/$(DEPLOY_NAME); fi"; \ - if [ -r .rsync ] ; then rsync_xtra=`cat .rsync`; fi; \ - if [ -r .rsync_$(host) ] ; then rsync_xtra_host=`cat .rsync_$(host)`; fi; \ + @- $(foreach host,$(DEPLOY_HOSTS), \ + 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; \ - ssh $(SSH_USER)@$(host) "cd $(DEPLOY_PATH)/$(DEPLOY_NAME); if [ -e .env ]; then chmod o-r .env ; fi; if [ -e secrets.mk ]; then chmod o-r secrets.mk; fi; if [ -e secrets.yaml ]; then chmod o-r secrets.yaml; fi"; \ + ssh $(SSH_USER)@$(host) "cd $(DEPLOY_PATH)/$(DEPLOY_NAME) && chmod o-r .env secrets*"; \ ) endif @@ -134,17 +123,7 @@ 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) @@ -152,9 +131,9 @@ restart: restart-$(DEPLOY_TYPE) reload: ifneq (,$(wildcard reload.sh)) @- echo "\n### reloading ..." - @ $(foreach host,$(DEPLOY_HOSTS), \ + @- $(foreach host,$(DEPLOY_HOSTS), \ echo "### reloading service on $(host)"; \ - if [ -e reload.sh ]; then ssh $(SSH_USER)@$(host) "cd $(DEPLOY_PATH)/$(DEPLOY_NAME); ./reload.sh"; fi; \ + ssh $(SSH_USER)@$(host) "cd $(DEPLOY_PATH)/$(DEPLOY_NAME); ./reload.sh"; \ ) else @- echo "\n### no reload script found" diff --git a/README.md b/README.md index c9b816d..dc4693c 100644 --- a/README.md +++ b/README.md @@ -2,13 +2,15 @@ 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 1. Clone **make-deploy** as a submodule into your repository: - $ git submodule add https://git.dnix.de/dnix/make-deploy + $ git submodule add https://git.chefkoch.net/pub/make-deploy 2. Create a symlink to the Makefile: @@ -22,7 +24,6 @@ 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 @@ -35,8 +36,6 @@ 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 diff --git a/apt.mk b/apt.mk index cbec207..b3099ea 100644 --- a/apt.mk +++ b/apt.mk @@ -1,15 +1,12 @@ -MANDATORY = $(shell printenv MANDATORY) APT_PACKAGES +MANDATORY-apt = DEPLOY_HOSTS SSH_USER APT_PACKAGES DEPLOY_NAME pull-apt: # nop start-apt: @- echo "\n### start" - @ $(foreach host,$(DEPLOY_HOSTS), \ - echo "#host: $(host)"; \ - set -e; \ - ssh $(SSH_USER)@$(host) "sudo apt install -y $(APT_PACKAGES)"; \ - if [ -e start.sh ]; then ssh $(SSH_USER)@$(host) "sh start.sh"; fi; \ + @- $(foreach host,$(DEPLOY_HOSTS), \ + echo "$(host)"; \ + ssh $(SSH_USER)@$(host) "sudo apt install -y $(APT_PACKAGES); sh start.sh"; \ sleep $(DEPLOY_START_DELAY); \ - set +e; \ ) diff --git a/compose-file.mk b/compose-file.mk index 26a889c..03a194c 100644 --- a/compose-file.mk +++ b/compose-file.mk @@ -1,17 +1,17 @@ -MANDATORY = $(shell printenv MANDATORY) SSH_USER 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)" - @$(foreach host,$(DEPLOY_HOSTS), \ - echo "#host: $(host)"; \ - if test "$(DOCKER_LOGIN)" -eq 1 ; \ + @- echo "\n### pulling image(s)" + @- $(foreach host,$(DEPLOY_HOSTS), \ + echo "$(host)"; \ + if test $(DOCKER_LOGIN) -eq 1 ; \ then \ - echo "\n#### perform docker login with user $(DOCKER_USER) on $(DOCKER_REGISTRY)"; \ - ssh $(SSH_USER)@$(host) "echo $(DOCKER_PASS) | docker login -u $(DOCKER_USER) --password-stdin $(DOCKER_REGISTRY)"; \ + 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; \ if test -n "$(DOCKER_IMAGE)" ; \ then \ @@ -20,33 +20,27 @@ pull-compose-file: ) start-compose-file: - @ echo "\n### starting service(s)" - @$(foreach host,$(DEPLOY_HOSTS), \ - set -e; \ - echo "#host: $(host)"; \ + @- echo "\n### starting service(s)" + @- $(foreach host,$(DEPLOY_HOSTS), \ + echo "$(host)"; \ ssh $(SSH_USER)@$(host) "cd $(DEPLOY_PATH)/$(DEPLOY_NAME); docker-compose -f $(DEPLOY_COMPOSE_FILE) -p $(DEPLOY_COMPOSE_PROJECT) up -d"; \ sleep $(DEPLOY_START_DELAY); \ - set +e; \ ) stop-compose-file: - @echo "\n### stopping service(s)" - @$(foreach host,$(DEPLOY_HOSTS), \ - set -e; \ - echo "#host: $(host)"; \ + @- echo "\n### stopping service(s)" + @- $(foreach host,$(DEPLOY_HOSTS), \ + echo "$(host)"; \ ssh $(SSH_USER)@$(host) "cd $(DEPLOY_PATH)/$(DEPLOY_NAME); docker-compose -f $(DEPLOY_COMPOSE_FILE) -p $(DEPLOY_COMPOSE_PROJECT) down"; \ - set +e; \ ) logs-compose-file: - @ echo "\n### logs" - @ ssh $(SSH_USER)@$(host) "cd $(DEPLOY_PATH)/$(DEPLOY_NAME); docker-compose -f $(DEPLOY_COMPOSE_FILE) -p $(DEPLOY_COMPOSE_PROJECT) logs -f $(service)" + @- echo "\n### logs" + @- ssh $(SSH_USER)@$(host) "cd $(DEPLOY_PATH)/$(DEPLOY_NAME); docker-compose -f $(DEPLOY_COMPOSE_FILE) -p $(DEPLOY_COMPOSE_PROJECT) logs -f $(service)" restart-compose-file: - @$(foreach host,$(DEPLOY_HOSTS), \ - set -e; \ - echo "#host: $(host)"; \ + @- $(foreach host,$(DEPLOY_HOSTS), \ + echo "$(host)"; \ ssh $(SSH_USER)@$(host) "cd $(DEPLOY_PATH)/$(DEPLOY_NAME); docker-compose -f $(DEPLOY_COMPOSE_FILE) -p $(DEPLOY_COMPOSE_PROJECT) restart"; \ sleep $(DEPLOY_START_DELAY); \ - set +e; \ ) diff --git a/compose.mk b/compose.mk index 0142d3f..6de67f8 100644 --- a/compose.mk +++ b/compose.mk @@ -1,19 +1,17 @@ -ifdef DOCKER_LOGIN -MANDATORY = $(shell printenv MANDATORY) DOCKER_USER DOCKER_PASS DOCKER_REGISTRY -endif +MANDATORY-compose = DEPLOY_HOSTS DEPLOY_TYPE SSH_USER DEPLOY_NAME ifndef DOCKER_LOGIN DOCKER_LOGIN = 0 endif pull-compose: - @echo "\n### pulling image(s)" - @$(foreach host,$(DEPLOY_HOSTS), \ - echo "#host: $(host)"; \ - if test "$(DOCKER_LOGIN)" -eq 1 ; \ + @- echo "\n### pulling image(s)" + @- $(foreach host,$(DEPLOY_HOSTS), \ + echo "$(host)"; \ + if test $(DOCKER_LOGIN) -eq 1 ; \ then \ - echo "\n#### perform docker login with user $(DOCKER_USER) on $(DOCKER_REGISTRY)"; \ - ssh $(SSH_USER)@$(host) "echo $(DOCKER_PASS) | docker login -u $(DOCKER_USER) --password-stdin $(DOCKER_REGISTRY)"; \ + 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; \ if test -n "$(DOCKER_IMAGE)" ; \ then \ @@ -22,30 +20,27 @@ pull-compose: ) start-compose: - @echo "\n### starting service(s)" - @$(foreach host,$(DEPLOY_HOSTS), \ - set -e; \ - echo "#host: $(host)"; \ - ssh $(SSH_USER)@$(host) "cd $(project_dir); docker-compose up -d"; \ + @- echo "\n### starting service(s)" + @- $(foreach host,$(DEPLOY_HOSTS), \ + echo "$(host)"; \ + ssh $(SSH_USER)@$(host) "cd $(DEPLOY_PATH)/$(DEPLOY_NAME); docker-compose up -d"; \ sleep $(DEPLOY_START_DELAY); \ - set +e; \ ) +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" - @$(foreach host,$(DEPLOY_HOSTS), \ - set -e; \ - echo "#host: $(host)"; \ - ssh $(SSH_USER)@$(host) "cd $(project_dir); docker-compose logs -f $(service)"; \ - set +e; \ - ) - + @- echo "\n### logs" + @- 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), \ - set -e; \ - echo "#host: $(host)"; \ - ssh $(SSH_USER)@$(host) "cd $(project_dir); docker-compose restart"; \ + @- $(foreach host,$(DEPLOY_HOSTS), \ + echo "$(host)"; \ + ssh $(SSH_USER)@$(host) "cd $(DEPLOY_PATH)/$(DEPLOY_NAME); docker-compose restart"; \ sleep $(DEPLOY_START_DELAY); \ - set +e; \ ) diff --git a/cron.mk b/cron.mk index 4296a07..f107828 100644 --- a/cron.mk +++ b/cron.mk @@ -1,22 +1,18 @@ -MANDATORY = $(shell printenv MANDATORY) CRON_USER +MANDATORY-cron = true start-cron: @- echo "\n### starting..." @- $(foreach host,$(DEPLOY_HOSTS), \ echo "$(host)"; \ - set -e; \ ssh $(SSH_USER)@$(host) "sudo -u $(CRON_USER) sh -c 'crontab -l | sed \"/^#make-deploy-cron:$(DEPLOY_NAME)/,+1 d\" | { cat; echo \"#make-deploy-cron:$(DEPLOY_NAME)\"; cat \"$(DEPLOY_PATH)/$(DEPLOY_NAME)/crontab\"; } | crontab -'"; \ sleep $(DEPLOY_START_DELAY); \ - set +e; \ ) stop-cron: @- echo "\n### stopping ..." @- $(foreach host,$(DEPLOY_HOSTS), \ echo "$(host)"; \ - set -e; \ ssh $(SSH_USER)@$(host) "sudo -u $(CRON_USER) sh -c 'crontab -l | sed \"/^#make-deploy-cron:$(DEPLOY_NAME)/,+1 d\" | crontab -'"; \ - set +e; \ ) pull-cron: diff --git a/helm.mk b/helm.mk index 394fb8c..a1ef5ab 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 K8S_NAMESPACE +MANDATORY-helm = 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 e5e8f02..37f712c 100644 --- a/k8s.mk +++ b/k8s.mk @@ -2,21 +2,15 @@ # # deploys k8s -MANDATORY = $(shell printenv MANDATORY) K8S_CONTEXT -K8S_MANIFEST_FILENAME ?= kubernetes.yaml -ifneq ("$(wildcard secrets.yaml)","") - SECRETS="secrets.yaml" -else - SECRETS="" -endif +MANDATORY-k8s = K8S_CONTEXT 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 $(K8S_MANIFEST_FILENAME) and if available secrets file $(SECRETS)" - @ cat $(K8S_MANIFEST_FILENAME) $(SECRETS) | envsubst | kubectl apply $(K8S_ADDITIONAL_PARAMS) -f - + @- echo "\n### run kubectl apply -f kubernetes.yaml and secrets.yaml" + @ cat kubernetes.yaml secrets.yaml | envsubst | kubectl apply -f - pull-k8s: # nop diff --git a/kustomize.mk b/kustomize.mk index 9bdcfdf..60dacac 100644 --- a/kustomize.mk +++ b/kustomize.mk @@ -1,4 +1,4 @@ -MANDATORY = $(shell printenv MANDATORY) K8S_CONTEXT KUSTOMIZE_FOLDER NAMESPACE +MANDATORY-kustomize = K8S_CONTEXT KUSTOMIZE_FOLDER NAMESPACE # kustomize # # this uses kustomize to install stuff on k8s diff --git a/simple.mk b/simple.mk index 908e4ce..b95bf0f 100644 --- a/simple.mk +++ b/simple.mk @@ -1,21 +1,18 @@ -# simple +MANDATORY-copy = DEPLOY_TYPE DEPLOY_HOSTS SSH_USER DEPLOY_PATH DEPLOY_NAME +MANDATORY-simple = $(MANDATORY-copy) + +# copy # # 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 start-simple: @- echo "\n### start" @- $(foreach host,$(DEPLOY_HOSTS), \ - echo "#host: $(host)"; \ - set -e; \ - if [ -e start.sh ] ; then ssh $(SSH_USER)@$(host) "cd $(DEPLOY_PATH)/$(DEPLOY_NAME); sh start.sh"; fi; \ + echo "$(host)"; \ + ssh $(SSH_USER)@$(host) "cd $(DEPLOY_PATH)/$(DEPLOY_NAME); sh start.sh"; \ sleep $(DEPLOY_START_DELAY); \ - set +e; \ ) diff --git a/swarm.mk b/swarm.mk index dd4461d..913a125 100644 --- a/swarm.mk +++ b/swarm.mk @@ -1,12 +1,12 @@ +MANDATORY-swarm = DEPLOY_HOSTS DEPLOY_TYPE TAG + pull-swarm: start-swarm: @- echo "\n### starting service(s)" @- $(foreach host,$(DEPLOY_HOSTS), \ echo "$(host)"; \ - set -e; \ ssh $(SSH_USER)@$(host) "cd $(DEPLOY_PATH)/$(DEPLOY_NAME); docker stack deploy -c stack.yml $(DEPLOY_NAME)"; \ - set +e; \ ) stop-swarm: diff --git a/test.sh b/test.sh index 88d79e1..42d08f0 100755 --- a/test.sh +++ b/test.sh @@ -30,7 +30,7 @@ function test_with_minimal_vars_compose(){ cp $TESTS/compose_config.mk config.mk cp $TESTS/docker-compose.yml . make deploy - rm -f docker-compose.yml + rm -f docker-compose.yml config.mk } function test_with_minimal_vars_compose_file(){ @@ -38,7 +38,16 @@ function test_with_minimal_vars_compose_file(){ cp $TESTS/compose_file_config.mk config.mk cp $TESTS/docker-compose.yml . make deploy - rm -f docker-compose.yml + rm -f docker-compose.yml config.mk +} + +function test_with_minimal_vars_compose_and_tag(){ + echo "::::::::: $FUNCNAME ::::::::::::" + cp $TESTS/compose_config.tag.mk config.mk + cp $TESTS/docker-compose.tag.yml docker-compose.yml + echo "TAG=3.17" > .env + make deploy + rm -f docker-compose.yml config.mk } prepdir @@ -46,5 +55,6 @@ prepdir test_with_minimal_vars_apt test_with_minimal_vars_compose test_with_minimal_vars_compose_file +test_with_minimal_vars_compose_and_tag cleandir diff --git a/testing/compose_config.tag.mk b/testing/compose_config.tag.mk new file mode 100644 index 0000000..c63ecb7 --- /dev/null +++ b/testing/compose_config.tag.mk @@ -0,0 +1,5 @@ +DEPLOY_NAME = make-deploy-test-compose-tag +DEPLOY_PATH = /tmp +DEPLOY_HOSTS = localhost +DEPLOY_TYPE = compose +SSH_USER = $(USER) diff --git a/testing/docker-compose.tag.yml b/testing/docker-compose.tag.yml new file mode 100644 index 0000000..c6cee18 --- /dev/null +++ b/testing/docker-compose.tag.yml @@ -0,0 +1,4 @@ +services: + curl: + image: "alpine:${TAG}" + command: cat /etc/os-release diff --git a/tf.mk b/tf.mk index df910ed..b06e579 100644 --- a/tf.mk +++ b/tf.mk @@ -1,5 +1,4 @@ -MANDATORY = $(shell printenv MANDATORY) TF_FLAGS - +MANDATORY-tf = # tf # # deploys via tf apply