mirror of
https://github.com/docker-mailserver/docker-mailserver.git
synced 2024-01-19 02:48:50 +00:00
c267d8a990
Centralize the collection of the HOSTNAME and DOMAINAME so that it's predictable and uniform across the various scripts (using the helper). Ensure it supports the various configurations users can have (both subdomain and without subdomain, override and no override). --- * using _obtain_hostname_and_domainname helper + covers when not a subdomain doc: OVERRIDE_HOSTNAME takes priority * added tests for non-subdomain hostname + further improvements * moved SRS DOMAINANME tests into hostname test file + Allowing DOMAINNAME ENV to override what would be automatically set --- Co-authored-by: Georg Lauterbach <44545919+georglauterbach@users.noreply.github.com>
59 lines
3.4 KiB
Makefile
59 lines
3.4 KiB
Makefile
SHELL = /bin/bash
|
|
|
|
NAME ?= mailserver-testing:ci
|
|
VCS_REF = $(shell git rev-parse --short HEAD)
|
|
VCS_VER = $(shell git describe --tags --contains --always)
|
|
|
|
export CDIR = $(shell pwd)
|
|
|
|
# -----------------------------------------------
|
|
# --- Generic Build Targets ---------------------
|
|
# -----------------------------------------------
|
|
|
|
all: lint build backup generate-accounts tests clean
|
|
|
|
build:
|
|
docker build -t $(NAME) . --build-arg VCS_VER=$(VCS_VER) --build-arg VCS_REF=$(VCS_REF)
|
|
|
|
backup:
|
|
# if backup directories exist, clean hasn't been called, therefore
|
|
# we shouldn't overwrite it. It still contains the original content.
|
|
-@ [[ ! -d config.bak ]] && cp -rp config config.bak || :
|
|
-@ [[ ! -d testconfig.bak ]] && cp -rp test/config testconfig.bak || :
|
|
|
|
clean:
|
|
# remove running and stopped test containers
|
|
-@ [[ -d config.bak ]] && { rm -rf config ; mv config.bak config ; } || :
|
|
-@ [[ -d testconfig.bak ]] && { sudo rm -rf test/config ; mv testconfig.bak test/config ; } || :
|
|
-@ for container in $$(docker ps -a --filter name='^/mail$$|^ldap_for_mail$$|^mail_override_hostname$$|^mail_non_subdomain_hostname$$|^open-dkim$$|^hadolint$$|^eclint$$|^shellcheck$$' | sed 1d | cut -f 1-1 -d ' '); do docker rm -f $$container; done
|
|
-@ sudo rm -rf test/onedir test/alias test/quota test/relay test/config/dovecot-lmtp/userdb test/config/key* test/config/opendkim/keys/domain.tld/ test/config/opendkim/keys/example.com/ test/config/opendkim/keys/localdomain2.com/ test/config/postfix-aliases.cf test/config/postfix-receive-access.cf test/config/postfix-receive-access.cfe test/config/dovecot-quotas.cf test/config/postfix-send-access.cf test/config/postfix-send-access.cfe test/config/relay-hosts/chksum test/config/relay-hosts/postfix-aliases.cf test/config/dhparams.pem test/config/dovecot-lmtp/dh.pem test/config/relay-hosts/dovecot-quotas.cf test/config/user-patches.sh test/alias/config/postfix-virtual.cf test/quota/config/dovecot-quotas.cf test/quota/config/postfix-accounts.cf test/relay/config/postfix-relaymap.cf test/relay/config/postfix-sasl-password.cf test/duplicate_configs/
|
|
|
|
# -----------------------------------------------
|
|
# --- Tests -------------------------------------
|
|
# -----------------------------------------------
|
|
|
|
generate-accounts:
|
|
@ docker run --rm -e MAIL_USER=user1@localhost.localdomain -e MAIL_PASS=mypassword -t $(NAME) /bin/sh -c 'echo "$$MAIL_USER|$$(doveadm pw -s SHA512-CRYPT -u $$MAIL_USER -p $$MAIL_PASS)"' > test/config/postfix-accounts.cf
|
|
@ docker run --rm -e MAIL_USER=user2@otherdomain.tld -e MAIL_PASS=mypassword -t $(NAME) /bin/sh -c 'echo "$$MAIL_USER|$$(doveadm pw -s SHA512-CRYPT -u $$MAIL_USER -p $$MAIL_PASS)"' >> test/config/postfix-accounts.cf
|
|
@ docker run --rm -e MAIL_USER=user3@localhost.localdomain -e MAIL_PASS=mypassword -t $(NAME) /bin/sh -c 'echo "$$MAIL_USER|$$(doveadm pw -s SHA512-CRYPT -u $$MAIL_USER -p $$MAIL_PASS)|userdb_mail=mbox:~/mail:INBOX=~/inbox"' >> test/config/postfix-accounts.cf
|
|
@ echo "# this is a test comment, please don't delete me :'(" >> test/config/postfix-accounts.cf
|
|
@ echo " # this is also a test comment, :O" >> test/config/postfix-accounts.cf
|
|
|
|
tests:
|
|
@ NAME=$(NAME) ./test/bats/bin/bats test/*.bats
|
|
|
|
.PHONY: ALWAYS_RUN
|
|
test/%.bats: ALWAYS_RUN
|
|
@ ./test/bats/bin/bats $@
|
|
|
|
lint: eclint hadolint shellcheck
|
|
|
|
hadolint:
|
|
@ ./test/linting/lint.sh hadolint
|
|
|
|
shellcheck:
|
|
@ ./test/linting/lint.sh shellcheck
|
|
|
|
eclint:
|
|
@ ./test/linting/lint.sh eclint
|