sahara/tools/gate/build-images

74 lines
2.2 KiB
Bash
Executable File

#!/bin/bash -xe
# The script fails at the first error
PLUGIN=$1
function setup_build_env() {
source /etc/os-release || source /usr/lib/os-release
if [ "${ID}" = "ubuntu" ]; then
# The Ubuntu kernel, for mysterious reasons, can be read only by root. Fix it.
# See https://bugs.launchpad.net/ubuntu/+source/linux/+bug/759725
sudo dpkg-statoverride --add --update root root 0644 /boot/vmlinuz-$(uname -r)
fi
}
function get_cloud_image() {
# Download the cloud image for the specified distro and version
local required_name="$1"
local distro_name="$2"
local img_url=""
case "${distro_name}" in
"centos7")
cache_name="CentOS-7-x86_64-GenericCloud.qcow2"
img_url="http://cloud.centos.org/centos/7/images/CentOS-7-x86_64-GenericCloud.qcow2"
;;
"ubuntu-trusty")
# assume trusty for now
cache_name="trusty-server-cloudimg-amd64-disk1.img"
img_url="https://cloud-images.ubuntu.com/trusty/current/trusty-server-cloudimg-amd64-disk1.img"
;;
*)
;;
esac
# download the image to the cache
if [ ! -f "${cache_name}" ]; then
curl -o "${cache_name}" "${img_url}"
fi
cp -f ${cache_name} ${required_name}
}
function build_images() {
# build all the images for the specified plugin_name
# - plugin_name: name of the plugin as required by sahara-image-pack
# - plugin_version: version of the plugin
# - distributions: list of distributions for the version of the plugin
local plugin_name="$1"
local plugin_version="$2"
local distributions="$3"
local image_name=""
for distro in ${distributions}; do
image_name="${distro}_${plugin_name}_${plugin_version}.qcow2"
get_cloud_image "${image_name}" "${distro}"
tox -e images -- sahara-image-pack --image "${image_name}" "${plugin_name}" "${plugin_version}"
done
}
setup_build_env
# This define the matrix: for each plugin version, add a line like:
# build_images "<plugin_name>" "<plugin_version>" "<distribution> <distribution>"
case "$PLUGIN" in
"cloudera")
build_images "cdh" "5.7.0" "centos7"
;;
*)
echo "Invalid version"
;;
esac