groupon/ansible-silo

View on GitHub
silo/bundle/build

Summary

Maintainability
Test Coverage
#!/usr/bin/env bash
#
# Builds Docker images
#
# Copyright (c) 2017, Groupon, Inc.
# All rights reserved.
#
# Redistribution and use in source and binary forms, with or without
# modification, are permitted provided that the following conditions are
# met:
#
# Redistributions of source code must retain the above copyright notice,
# this list of conditions and the following disclaimer.
#
# Redistributions in binary form must reproduce the above copyright
# notice, this list of conditions and the following disclaimer in the
# documentation and/or other materials provided with the distribution.
#
# Neither the name of GROUPON nor the names of its contributors may be
# used to endorse or promote products derived from this software without
# specific prior written permission.
#
# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
# IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
# TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
# PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
# HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED
# TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
# PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
# LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
# NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
# SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

# Use first script parameter or default to 0.0.0
readonly bundle_version="${1:-0.0.0}"
readonly bundle_image="{{ BUNDLE_IMAGE }}"

# If there is a requirements file, install it per ansible-galaxy
if [[ -f "playbooks/requirements.yml" ]]; then
  cd playbooks || exit
  ansible-galaxy install --role-file requirements.yml || exit
  cd ..
fi

# Build as "latest" image
docker build --build-arg "v=${bundle_version}" \
  --tag "${bundle_image}:${bundle_version}" . || exit

docker tag "$(docker images --quiet "${bundle_image}:${bundle_version}")" \
  "${bundle_image}:latest"  || exit

# Show installation instructions
echo ""
echo "To install '${bundle_image}:${bundle_version}' for just your user," \
   "run the following command:"
echo "  docker run --interactive --tty --rm --volume" \
   "\"\${HOME}/bin:/silo_install_path\" ${bundle_image}:${bundle_version}" \
   "--install"
echo ""
echo "To install '${bundle_image}:${bundle_version}' for all users," \
   "run the following command:"
echo "  docker run --interactive --tty --rm --volume" \
   " \"/usr/local/bin:/silo_install_path\" ${bundle_image}:${bundle_version}" \
   " --install"