Skip to content

Commit

Permalink
Test: Create test script to validate script (#21)
Browse files Browse the repository at this point in the history
* Update test.sh

Signed-off-by: Jean-Yves <[email protected]>

* Update test.sh

Signed-off-by: Jean-Yves <[email protected]>

* Add healthcheck.sh

Signed-off-by: Jean-Yves <[email protected]>

* fix curl version

Signed-off-by: Jean-Yves <[email protected]>

---------

Signed-off-by: Jean-Yves <[email protected]>
  • Loading branch information
docjyJ committed Sep 21, 2024
1 parent 98deb88 commit aa414cd
Show file tree
Hide file tree
Showing 3 changed files with 47 additions and 10 deletions.
8 changes: 7 additions & 1 deletion Dockerfile
Original file line number Diff line number Diff line change
Expand Up @@ -2,8 +2,14 @@
FROM stalwartlabs/mail-server:v0.9.4

COPY --chmod=775 entrypoint.sh /entrypoint.sh
COPY --chmod=775 healthcheck.sh /healthcheck.sh

RUN apt-get install --no-install-recommends -y curl=7.88.1-10+deb12u7

EXPOSE 10003

ENTRYPOINT [ "/bin/bash", "/entrypoint.sh" ]
HEALTHCHECK --interval=30s --timeout=3s --start-period=5s \
CMD bash /healthcheck.sh

ENTRYPOINT [ "/entrypoint.sh" ]
CMD ["/usr/local/bin/stalwart-mail", "--config", "/opt/stalwart-mail/etc/config.toml"]
3 changes: 3 additions & 0 deletions healthcheck.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
#!/bin/bash

test "$(curl -s -o /dev/null -w "%{http_code}" http://127.0.0.1:10003/healthz/ready)" == "200"
46 changes: 37 additions & 9 deletions test.sh
Original file line number Diff line number Diff line change
@@ -1,16 +1,44 @@
#!/bin/bash

# NOTE: This script use podman instead of docker !
docker() {
podman "$@"
STEP_NB=5
STEP_I=0
print_step() {
STEP_I=$((STEP_I+1))
echo ""
echo "=====[$STEP_I/$STEP_NB]====="
echo "$3"
}

#
# Work in progress
#

IMAGE=$(docker build . | tee /dev/tty | tail -n 1)
NC_DOMAIN="example.com"
CADDY="my_caddy_example_com"
STALWART="my_stalwart_example_com"
SSL_PATH="caddy/certificates/acme-v02.api.letsencrypt.org-directory/mail.$NC_DOMAIN"
PASSWORD="password"

echo "Script generated :"
print_step "Build Docker Image"
docker container rm $STALWART -f
docker volume rm $STALWART $CADDY -f
docker build -t "$STALWART" .
echo "docker run --rm -v $STALWART:/opt/stalwart-mail -v $CADDY:/caddy:ro --env "NC_DOMAIN=$NC_DOMAIN" $STALWART stalwart-cli --help"

docker run --rm --env AUTO_CONFIG_TLS_CERT=OFF "$IMAGE" cat /opt/stalwart-mail/etc/config.toml

print_step "Generate prepare env"
docker run --rm -v $CADDY:/ssl --entrypoint /bin/mkdir $STALWART -p "/ssl/$SSL_PATH/"
docker run --rm -v $CADDY:/ssl --entrypoint /bin/openssl $STALWART req -x509 -noenc -subj "/C=AA/ST=A/O=A/CN=mail.$NC_DOMAIN" -keyout "/ssl/$SSL_PATH/mail.$NC_DOMAIN.key" -out "/ssl/$SSL_PATH/mail.$NC_DOMAIN.crt"

print_step "Run container"
docker run --rm -v $CADDY:/caddy:ro -v $STALWART:/opt/stalwart-mail \
-e "NC_DOMAIN=$NC_DOMAIN" \
-e "STALWART_USER_PASS=$PASSWORD" \
--name $STALWART $STALWART &
STALWART_PID=$!
sleep 11

print_step "Test"
docker exec $STALWART stalwart-cli -u http://127.0.0.1:10003 -c "admin:$PASSWORD" server list-config | sort > out.txt

print_step "Remove volume"
docker container rm $STALWART -f
docker volume rm $STALWART $CADDY
tail --pid=$STALWART_PID -f /dev/null

0 comments on commit aa414cd

Please sign in to comment.