| #!/bin/bash |
| # Copyright (c) HashiCorp, Inc. |
| # SPDX-License-Identifier: BUSL-1.1 |
| |
| |
| set -euo pipefail |
| |
| # verify_docker invokes the given Docker image with the argument `version` and inspects its output. |
| # If its output doesn't match the version given, the script will exit 1 and report why it failed. |
| # This is meant to be run as part of the build workflow to verify the built image meets some basic |
| # criteria for validity. |
| # |
| # Because this is meant to be run as the `smoke_test` for the docker-build workflow, the script expects |
| # the image name parameter to be provided by the `IMAGE_NAME` environment variable, rather than a |
| # positional argument. |
| |
| function usage { |
| echo "IMAGE_NAME=<image uri> ./verify_docker <expect_version>" |
| } |
| |
| function main { |
| local image_name="${IMAGE_NAME:-}" |
| local expect_version="${1:-}" |
| local got_version |
| |
| if [[ -z "${image_name}" ]]; then |
| echo "ERROR: IMAGE_NAME is not set" |
| usage |
| exit 1 |
| fi |
| |
| if [[ -z "${expect_version}" ]]; then |
| echo "ERROR: expected version argument is required" |
| usage |
| exit 1 |
| fi |
| |
| got_version="$( awk '{print $2}' <(head -n1 <(docker run --rm "${image_name}" version)) )" |
| if [ "${got_version}" != "${expect_version}" ]; then |
| echo "Test FAILED" |
| echo "Got: ${got_version}, Want: ${expect_version}" |
| exit 1 |
| fi |
| echo "Test PASSED" |
| } |
| |
| main "$@" |