kolla-ansible/tools/setup_gate.sh
Mark Goddard d8733b290e CI: Use upper constraints when installing clients
Clients are starting to release versions that don't support Python 2.
The ironic scenario is currently failing on stable branches for this
reason.

Use upper constraints to avoid installing these new versions on stable
branches.

Change-Id: I4f91b53cbf2297d70da4b54d6c402c1427aacdd9
2020-02-25 11:21:06 +00:00

123 lines
3.6 KiB
Bash
Executable File

#!/bin/bash
set -o xtrace
set -o errexit
# Enable unbuffered output for Ansible in Jenkins.
export PYTHONUNBUFFERED=1
GIT_PROJECT_DIR=$(mktemp -d)
function setup_openstack_clients {
# Prepare virtualenv for openstack deployment tests
local packages=(python-openstackclient python-heatclient)
if [[ $SCENARIO == zun ]]; then
packages+=(python-zunclient)
fi
if [[ $SCENARIO == ironic ]]; then
packages+=(python-ironicclient)
fi
if [[ $SCENARIO == masakari ]]; then
packages+=(python-masakariclient)
fi
if [[ "debian" == $BASE_DISTRO ]]; then
sudo apt -y install python3-venv
fi
python3 -m venv ~/openstackclient-venv
~/openstackclient-venv/bin/pip install -U pip
~/openstackclient-venv/bin/pip install -c $UPPER_CONSTRAINTS ${packages[@]}
}
function setup_config {
if [[ $SCENARIO != "bifrost" ]]; then
GATE_IMAGES="^cron,^fluentd,^glance,^haproxy,^keepalived,^keystone,^kolla-toolbox,^mariadb,^memcached,^neutron,^nova-,^openvswitch,^rabbitmq,^horizon,^chrony,^heat,^placement"
else
GATE_IMAGES="bifrost"
fi
if [[ $SCENARIO == "ceph-ansible" ]]; then
GATE_IMAGES+=",^cinder"
fi
if [[ $SCENARIO == "zun" ]]; then
GATE_IMAGES+=",^zun,^kuryr,^etcd,^cinder,^iscsid"
if [[ $BASE_DISTRO != "centos" ]] || [[ $BASE_DISTRO_MAJOR_VERSION -eq 7 ]]; then
GATE_IMAGES+=",^tgtd"
fi
fi
if [[ $SCENARIO == "scenario_nfv" ]]; then
GATE_IMAGES+=",^tacker,^mistral,^redis,^barbican"
fi
if [[ $SCENARIO == "ironic" ]]; then
GATE_IMAGES+=",^dnsmasq,^ironic,^iscsid"
fi
if [[ $SCENARIO == "masakari" ]]; then
GATE_IMAGES+=",^masakari"
fi
if [[ $SCENARIO == "swift" ]]; then
GATE_IMAGES+=",^swift"
fi
if [[ $SCENARIO == "mariadb" ]]; then
GATE_IMAGES="^cron,^haproxy,^keepalived,^kolla-toolbox,^mariadb"
fi
# NOTE(yoctozepto): we cannot build and push at the same time on debian
# buster see https://github.com/docker/for-linux/issues/711.
PUSH="true"
if [[ "debian" == $BASE_DISTRO ]]; then
PUSH="false"
fi
cat <<EOF | sudo tee /etc/kolla/kolla-build.conf
[DEFAULT]
namespace = lokolla
base = ${BASE_DISTRO}
install_type = ${INSTALL_TYPE}
tag = ${TAG}
profile = gate
registry = 127.0.0.1:4000
push = ${PUSH}
logs_dir = /tmp/logs/build
template_override = /etc/kolla/template_overrides.j2
[profiles]
gate = ${GATE_IMAGES}
EOF
mkdir -p /tmp/logs/build
}
function prepare_images {
if [[ "${BUILD_IMAGE}" == "False" ]]; then
return
fi
sudo docker run -d -p 4000:5000 --restart=always -v /opt/kolla_registry/:/var/lib/registry --name registry registry:2
pushd "${KOLLA_SRC_DIR}"
# TODO(mgoddard): Remove this if block when CentOS 7 is no longer
# supported.
if [[ $BASE_DISTRO == "centos" ]] && [[ $BASE_DISTRO_MAJOR_VERSION -eq 8 ]]; then
kolla_base_distro=centos8
else
kolla_base_distro=${BASE_DISTRO}
fi
sudo tox -e "build-${kolla_base_distro}-${INSTALL_TYPE}"
# NOTE(yoctozepto): due to debian buster we push after images are built
# see https://github.com/docker/for-linux/issues/711
if [[ "debian" == $BASE_DISTRO ]]; then
for img in $(sudo docker image ls --format '{{ .Repository }}:{{ .Tag }}' | grep lokolla/); do
sudo docker push $img;
done
fi
popd
}
setup_openstack_clients
setup_config
RAW_INVENTORY=/etc/kolla/inventory
tools/kolla-ansible -i ${RAW_INVENTORY} -e ansible_user=$USER -vvv bootstrap-servers &> /tmp/logs/ansible/bootstrap-servers
prepare_images