diff --git a/.docker/release/test/build.sh b/.docker/release/test/build.sh new file mode 100755 index 000000000..5845979c3 --- /dev/null +++ b/.docker/release/test/build.sh @@ -0,0 +1,3 @@ +#!/bin/sh +set -eu +docker build -t snappymail/snappymail:test -f .docker/release/Dockerfile . diff --git a/.docker/release/test/config.yaml b/.docker/release/test/config.yaml new file mode 100644 index 000000000..a99c970b5 --- /dev/null +++ b/.docker/release/test/config.yaml @@ -0,0 +1,25 @@ +# See: https://github.com/GoogleContainerTools/container-structure-test +# See: https://github.com/GoogleContainerTools/container-structure-test/issues/78 +schemaVersion: 2.0.0 +commandTests: + - name: Server starts + command: /bin/sh + args: + - -c + - | + /entrypoint.sh > /tmp/out 2>&1 & + sleep 5 + set -eux + cat /tmp/out + pidof supervisord + pidof nginx + pidof php-fpm + wget -S -T 3 -O /dev/null http://localhost:8888 + kill `pidof supervisord` +metadataTest: + exposedPorts: ["8888", "9000"] + volumes: ["/var/lib/snappymail"] + entrypoint: [] + cmd: ["/entrypoint.sh"] + workdir: /snappymail + user: '' diff --git a/.docker/release/test/test.sh b/.docker/release/test/test.sh new file mode 100755 index 000000000..62765b407 --- /dev/null +++ b/.docker/release/test/test.sh @@ -0,0 +1,11 @@ +#!/bin/sh +# This script tests a given docker image using https://github.com/GoogleContainerTools/container-structure-test +set -eu + +IMAGE=${1:-snappymail/snappymail:test} +SCRIPT_DIR=$( cd "$(dirname "$0")" && pwd ) +docker inspect "$IMAGE" > /dev/null 2>&1 || docker pull "$IMAGE" # Pull the image if it doesn't exist in docker daemon +docker run --rm -i \ + -v /var/run/docker.sock:/var/run/docker.sock:ro \ + -v "$SCRIPT_DIR/config.yaml:/config.yaml:ro" \ + gcr.io/gcp-runtimes/container-structure-test:latest test --image "$IMAGE" --config config.yaml diff --git a/.github/workflows/docker.yml b/.github/workflows/docker.yml index 1b6efa4e4..59e1e6e5f 100644 --- a/.github/workflows/docker.yml +++ b/.github/workflows/docker.yml @@ -94,6 +94,11 @@ jobs: cache-from: type=local,src=/tmp/.buildx-cache cache-to: type=local,dest=/tmp/.buildx-cache-new,mode=max + - name: Test + run: | + TAG=$( echo "${{ steps.meta.outputs.tags }}" | head -n1 ) + .docker/release/test/test.sh "$TAG" + # Temp fix # https://github.com/docker/build-push-action/issues/252 # https://github.com/moby/buildkit/issues/1896