123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101 |
- #!/bin/bash
- # This is intended to run either locally (in which case a push is not
- # necessary) or in a CI job (where the results should be pushed to a
- # registry for use in later CI test jobs). Images are tagged locally with
- # both the base name (e.g. "test-target-base") and with the prefix given;
- # then only the prefixed name is pushed if --push is specified, assuming
- # any necessary credentials are available for the push. The same prefix
- # can then be used for the testing script. By default a local (non-registry)
- # prefix is used and no push can occur. To push to e.g. dockerhub:
- #
- # ./build-images.sh --push --prefix=docker.io/openshift/ansible-integration-
- set -o errexit
- set -o nounset
- set -o pipefail
- STARTTIME=$(date +%s)
- source_root=$(dirname "${0}")
- prefix="${PREFIX:-openshift-ansible-integration-}"
- push=false
- verbose=false
- build_options="${DOCKER_BUILD_OPTIONS:-}"
- help=false
- for args in "$@"
- do
- case $args in
- --prefix=*)
- prefix="${args#*=}"
- ;;
- --push)
- push=true
- ;;
- --no-cache)
- build_options="${build_options} --no-cache"
- ;;
- --verbose)
- verbose=true
- ;;
- --help)
- help=true
- ;;
- esac
- done
- if [ "$help" = true ]; then
- echo "Builds the docker images for openshift-ansible integration tests"
- echo "and pushes them to a central registry."
- echo
- echo "Options: "
- echo " --prefix=PREFIX"
- echo " The prefix to use for the image names."
- echo " default: openshift-ansible-integration-"
- echo
- echo " --push"
- echo " If set will push the tagged image"
- echo
- echo " --no-cache"
- echo " If set will perform the build without a cache."
- echo
- echo " --verbose"
- echo " Enables printing of the commands as they run."
- echo
- echo " --help"
- echo " Prints this help message"
- echo
- exit 0
- fi
- if [ "$verbose" = true ]; then
- set -x
- fi
- declare -a build_order ; declare -A images
- build_order+=( test-target-base ) ; images[test-target-base]=openshift_health_checker/builds/test-target-base
- build_order+=( preflight-aos-package-checks ); images[preflight-aos-package-checks]=openshift_health_checker/builds/aos-package-checks
- for image in "${build_order[@]}"; do
- BUILD_STARTTIME=$(date +%s)
- docker_tag=${prefix}${image}
- echo
- echo "--- Building component '$image' with docker tag '$docker_tag' ---"
- docker build ${build_options} -t $image -t $docker_tag "$source_root/${images[$image]}"
- echo
- BUILD_ENDTIME=$(date +%s); echo "--- build $docker_tag took $(($BUILD_ENDTIME - $BUILD_STARTTIME)) seconds ---"
- if [ "$push" = true ]; then
- docker push $docker_tag
- PUSH_ENDTIME=$(date +%s); echo "--- push $docker_tag took $(($PUSH_ENDTIME - $BUILD_ENDTIME)) seconds ---"
- fi
- done
- echo
- echo
- echo "++ Active images"
- docker images | grep ${prefix} | sort
- echo
- ret=$?; ENDTIME=$(date +%s); echo "$0 took $(($ENDTIME - $STARTTIME)) seconds"; exit "$ret"
|