Merge branch '2.0' into 2.1
This commit is contained in:
commit
a418804c83
142
BUILD/mdbci/build.sh
Executable file
142
BUILD/mdbci/build.sh
Executable file
@ -0,0 +1,142 @@
|
||||
#!/bin/bash
|
||||
|
||||
# $box - Vagrant box to be used for build
|
||||
|
||||
# $target - name of repository to put results
|
||||
|
||||
# $cmake_flags - cmake flags to be used in the build
|
||||
|
||||
# $MDBCI_VM_PATH - path to the MDBCI virtual machies directory
|
||||
|
||||
# $source - reference to the point in the source code repository
|
||||
|
||||
# $do_not_destroy_vm - if "yes" VM stays alive after the build
|
||||
|
||||
# $try_already_running - if "yes" already running VM will be used for build
|
||||
|
||||
# $gpg_keys_path - path to the directory containing GPG keys for repo signing
|
||||
# directory have to contain only one file *.public and only one *.private
|
||||
|
||||
set -x
|
||||
|
||||
# read the name of build scripts directory
|
||||
export script_dir="$(dirname $(readlink -f $0))"
|
||||
|
||||
# load all needed variables
|
||||
. ${script_dir}/set_build_variables.sh
|
||||
|
||||
dist_sfx="$platform"."$platform_version"
|
||||
export cmake_flags="${cmake_flags} -DPACKAGE=Y -DDISTRIB_SUFFIX=${dist_sfx}"
|
||||
|
||||
# prerare VM
|
||||
export provider=`${mdbci_dir}/mdbci show provider $box --silent 2> /dev/null`
|
||||
export name="$box-${JOB_NAME}-${BUILD_NUMBER}"
|
||||
export name=`echo $name | sed "s|/|-|g"`
|
||||
|
||||
export platform=`${mdbci_dir}/mdbci show boxinfo --box-name=$box --field='platform' --silent`
|
||||
export platform_version=`${mdbci_dir}/mdbci show boxinfo --box-name=$box --field='platform_version' --silent`
|
||||
|
||||
|
||||
if [ "${try_already_running}" == "yes" ]; then
|
||||
export name=${box}
|
||||
export snapshot_lock_file=$MDBCI_VM_PATH/${name}_snapshot_lock
|
||||
while [ -f ${snapshot_lock_file} ]
|
||||
do
|
||||
echo "snapshot is locked, waiting ..."
|
||||
sleep 5
|
||||
done
|
||||
echo ${JOB_NAME}-${BUILD_NUMBER} > ${snapshot_lock_file}
|
||||
${mdbci_dir}/mdbci snapshot revert --path-to-nodes $name --snapshot-name clean
|
||||
if [ $? == 0 ]; then
|
||||
export already_running="ok"
|
||||
fi
|
||||
fi
|
||||
|
||||
if [ "$already_running" != "ok" ]; then
|
||||
|
||||
eval "cat <<EOF
|
||||
$(<${script_dir}/templates/build.json.template)
|
||||
" 2> /dev/null > $MDBCI_VM_PATH/${name}.json
|
||||
|
||||
while [ -f ~/vagrant_lock ]
|
||||
do
|
||||
sleep 5
|
||||
done
|
||||
touch ~/vagrant_lock
|
||||
echo $JOB_NAME-$BUILD_NUMBER >> ~/vagrant_lock
|
||||
|
||||
# destroying existing box
|
||||
if [ -d "$MDBCI_VM_PATH/${name}" ]; then
|
||||
cd $MDBCI_VM_PATH/${name}
|
||||
vagrant destroy -f
|
||||
cd ${dir}
|
||||
fi
|
||||
|
||||
# starting VM for build
|
||||
echo "Generating build VM template"
|
||||
${mdbci_dir}/mdbci --override --template $MDBCI_VM_PATH/$name.json generate $name
|
||||
echo "starting VM for build"
|
||||
${mdbci_dir}/mdbci up --attempts=1 $name
|
||||
if [ $? != 0 ] ; then
|
||||
echo "Error starting VM"
|
||||
cd $MDBCI_VM_PATH/${name}
|
||||
rm ~/vagrant_lock
|
||||
cd $dir
|
||||
exit 1
|
||||
fi
|
||||
echo "copying public keys to VM"
|
||||
cp ~/build-scripts/team_keys .
|
||||
${mdbci_dir}/mdbci public_keys --key team_keys --silent $name
|
||||
fi
|
||||
|
||||
echo "Get VM info"
|
||||
export sshuser=`${mdbci_dir}/mdbci ssh --command 'whoami' --silent $name/build 2> /dev/null | tr -d '\r'`
|
||||
export IP=`${mdbci_dir}/mdbci show network $name/build --silent 2> /dev/null`
|
||||
export sshkey=`${mdbci_dir}/mdbci show keyfile $name/build --silent 2> /dev/null | sed 's/"//g'`
|
||||
export scpopt="-i $sshkey -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no -o ConnectTimeout=120 "
|
||||
export sshopt="$scpopt $sshuser@$IP"
|
||||
|
||||
echo "Release Vagrant lock"
|
||||
rm ~/vagrant_lock
|
||||
|
||||
echo "Starting build"
|
||||
${script_dir}/remote_build.sh
|
||||
export build_result=$?
|
||||
|
||||
shellcheck `find . | grep "\.sh"` | grep -i "POSIX sh"
|
||||
if [ $? -eq 0 ] ; then
|
||||
echo "POSIX sh error are found in the scripts"
|
||||
# exit 1
|
||||
fi
|
||||
|
||||
|
||||
${script_dir}/create_remote_repo.sh
|
||||
|
||||
${script_dir}/copy_repos.sh
|
||||
|
||||
|
||||
echo "Removing locks and destroying VM"
|
||||
cd $MDBCI_VM_PATH/$name
|
||||
if [ "$try_already_running" == "yes" ] ; then
|
||||
echo "Release lock for already running VM"
|
||||
rm $snapshot_lock_file
|
||||
fi
|
||||
if [[ "$do_not_destroy_vm" != "yes" && "$try_already_running" != "yes" ]] ; then
|
||||
echo "Destroying VM"
|
||||
vagrant destroy -f
|
||||
cd ..
|
||||
rm -rf $name
|
||||
rm -rf ${name}.json
|
||||
rm -rf ${name}_netwotk_config
|
||||
fi
|
||||
cd $dir
|
||||
|
||||
if [ $build_result -ne 0 ] ; then
|
||||
echo "Build FAILED!"
|
||||
exit $build_result
|
||||
fi
|
||||
|
||||
if [ ${run_upgrade_test} == "yes" ] ; then
|
||||
${script_dir}/upgrade_test.sh
|
||||
fi
|
||||
|
15
BUILD/mdbci/cnf/maxscale.cnf.minimum
Normal file
15
BUILD/mdbci/cnf/maxscale.cnf.minimum
Normal file
@ -0,0 +1,15 @@
|
||||
[maxscale]
|
||||
threads=4
|
||||
log_warning=1
|
||||
|
||||
[CLI]
|
||||
type=service
|
||||
router=cli
|
||||
|
||||
[CLI Listener]
|
||||
type=listener
|
||||
service=CLI
|
||||
protocol=maxscaled
|
||||
#address=localhost
|
||||
socket=default
|
||||
|
16
BUILD/mdbci/cnf/maxscale.cnf.minimum.1.4.4
Normal file
16
BUILD/mdbci/cnf/maxscale.cnf.minimum.1.4.4
Normal file
@ -0,0 +1,16 @@
|
||||
[maxscale]
|
||||
threads=4
|
||||
log_warning=1
|
||||
|
||||
[CLI]
|
||||
type=service
|
||||
router=cli
|
||||
|
||||
[CLI Listener]
|
||||
type=listener
|
||||
service=CLI
|
||||
protocol=maxscaled
|
||||
#address=localhost
|
||||
port=6603
|
||||
|
||||
|
15
BUILD/mdbci/configure_log_dir.sh
Normal file
15
BUILD/mdbci/configure_log_dir.sh
Normal file
@ -0,0 +1,15 @@
|
||||
set -x
|
||||
LOGS_DIR=${logs_dir:-$HOME/LOGS}
|
||||
echo $JOB_NAME | grep "/"
|
||||
if [ $? == 0 ] ; then
|
||||
export job_name_buildID=`echo $JOB_NAME | sed "s|/|-$BUILD_NUMBER/|"`
|
||||
export logs_publish_dir="${LOGS_DIR}/${job_name_buildID}/"
|
||||
else
|
||||
export logs_publish_dir="${LOGS_DIR}/${JOB_NAME}-${BUILD_NUMBER}"
|
||||
fi
|
||||
|
||||
export job_name_buildID=`echo ${JOB_NAME} | sed "s|/|-${BUILD_NUMBER}/|"`
|
||||
export logs_publish_dir="${LOGS_DIR}/${job_name_buildID}-${BUILD_NUMBER}"
|
||||
echo "Logs go to ${logs_publish_dir}"
|
||||
mkdir -p ${logs_publish_dir}
|
||||
|
36
BUILD/mdbci/copy_repos.sh
Executable file
36
BUILD/mdbci/copy_repos.sh
Executable file
@ -0,0 +1,36 @@
|
||||
#!/bin/bash
|
||||
|
||||
# Copyies repo from ${unsorted_repo_dir}/$target/$box to
|
||||
|
||||
dir=`pwd`
|
||||
if [ "$box_type" == "RPM" ] ; then
|
||||
export arch=`ssh $sshopt "arch"`
|
||||
. ${script_dir}/generate_build_info_path.sh
|
||||
|
||||
rm -rf $path_prefix/$platform/$platform_version/$arch/
|
||||
mkdir -p $path_prefix/$platform/$platform_version/$arch/
|
||||
cp -r ${unsorted_repo_dir}/$repo_name/$box/* $path_prefix/$platform/$platform_version/$arch/
|
||||
env > $build_info_path
|
||||
cd $path_prefix/$platform
|
||||
ln -s $platform_version "$platform_version"server
|
||||
ln -s $platform_version "$platform_version"Server
|
||||
|
||||
eval "cat <<EOF
|
||||
$(<${script_dir}/templates/repository-config/rpm.json.template)
|
||||
" 2> /dev/null > ${path_prefix}/${platform}_${platform_version}.json
|
||||
|
||||
|
||||
echo "copying done"
|
||||
else
|
||||
export arch=`ssh $sshopt "dpkg --print-architecture"`
|
||||
. ${script_dir}/generate_build_info_path.sh
|
||||
rm -rf $path_prefix/$platform_family/dists/$platform_version/main/binary-"$arch"
|
||||
rm -rf $path_prefix/$platform_family/dists/$platform_version/main/binary-i386
|
||||
mkdir -p $path_prefix/$platform_family/
|
||||
cp -r ${unsorted_repo_dir}/$repo_name/$box/* $path_prefix/$platform_family/
|
||||
env > $build_info_path
|
||||
eval "cat <<EOF
|
||||
$(<${script_dir}/templates/repository-config/deb.json.template)
|
||||
" 2> /dev/null > ${path_prefix}/${platform}_${platform_version}.json
|
||||
fi
|
||||
cd $dir
|
37
BUILD/mdbci/create_remote_repo.sh
Executable file
37
BUILD/mdbci/create_remote_repo.sh
Executable file
@ -0,0 +1,37 @@
|
||||
#!/bin/bash
|
||||
|
||||
# Creates RPM or DEB repository for biniries from
|
||||
# $pre_repo_dir/$target/$box, signs it with keys
|
||||
# from ${gpg_keys_path} and puts signed repo to
|
||||
|
||||
set -x
|
||||
|
||||
export work_dir="MaxScale"
|
||||
|
||||
echo "creating repository"
|
||||
echo "cleaning VM"
|
||||
ssh $sshopt "rm -rf dest; rm -rf src;"
|
||||
|
||||
echo " creating dirs on VM"
|
||||
ssh $sshopt "mkdir -p dest ; mkdir -p src; mkdir gpg_keys"
|
||||
|
||||
echo "copying stuff to VM"
|
||||
scp $scpopt $pre_repo_dir/$target/$box/* $sshuser@$IP:src/
|
||||
|
||||
scp $scpopt -r ${gpg_keys_path}/* $sshuser@$IP:./gpg_keys/
|
||||
ssh $sshopt "key=\`ls ~/gpg_keys/*.public -1\` ; gpg --import \$key"
|
||||
ssh $sshopt "key=\`ls ~/gpg_keys/*.private -1\` ; gpg --allow-secret-key-import --import \$key"
|
||||
|
||||
echo "executing create_repo.sh on VM"
|
||||
ssh $sshopt "export platform=$platform; export platform_version=$platform_version; ./$work_dir/BUILD/mdbci/create_repo.sh dest/ src/"
|
||||
if [ $? != 0 ] ; then
|
||||
echo "Repo creation failed!"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
echo "cleaning ${unsorted_repo_dir}/$target/$box/"
|
||||
rm -rf ${unsorted_repo_dir}/$target/$box/*
|
||||
|
||||
echo "copying repo from $box"
|
||||
mkdir -p ${unsorted_repo_dir}/$target/$box
|
||||
scp $scpopt -r $sshuser@$IP:dest/* ${unsorted_repo_dir}/$target/$box/
|
97
BUILD/mdbci/create_repo.sh
Executable file
97
BUILD/mdbci/create_repo.sh
Executable file
@ -0,0 +1,97 @@
|
||||
#!/bin/bash
|
||||
|
||||
set -x
|
||||
|
||||
destdir=$1
|
||||
sourcedir=$2
|
||||
|
||||
#rm -rf $destdir
|
||||
mkdir -p $destdir/
|
||||
|
||||
zypper --version
|
||||
z_res=$?
|
||||
yum --version
|
||||
y_res=$?
|
||||
|
||||
if [ $z_res -eq 127 ] && [ $y_res -eq 127 ] ; then
|
||||
# DEB-based system
|
||||
arch_name=`dpkg --print-architecture`
|
||||
arch="binary-$arch_name"
|
||||
cd $destdir
|
||||
debian_ver=`cat /etc/debian_version`
|
||||
echo "Debian version: $debian_ver"
|
||||
dist_name=$platform_version
|
||||
|
||||
mkdir -p dists/$dist_name/main/$arch/
|
||||
|
||||
cp ~/$sourcedir/* dists/$dist_name/main/$arch/
|
||||
sudo apt-get update
|
||||
sudo apt-get install -y dpkg-dev
|
||||
dpkg-scanpackages dists/$dist_name/main/$arch/ /dev/null | gzip -9c > dists/$dist_name/main/$arch/Packages.gz
|
||||
gunzip -c dists/$dist_name/main/$arch/Packages.gz > dists/$dist_name/main/$arch/Packages
|
||||
# echo "Archive: main" > dists/$dist_name/main/$arch/Release
|
||||
# echo "Suite: main" >> dists/$dist_name/main/$arch/Release
|
||||
echo "Components: main" >> dists/$dist_name/main/$arch/Release
|
||||
echo "Codename: $dist_name" >> dists/$dist_name/main/$arch/Release
|
||||
echo "Origin: MariaDB" >> dists/$dist_name/main/$arch/Release
|
||||
echo "Label: MariaDB Maxscale repository" >> dists/$dist_name/main/$arch/Release
|
||||
uname -m | grep "x86_64"
|
||||
if [ $? -eq 0 ] ; then
|
||||
# echo "Architectures: amd64 i386" >> dists/$dist_name/main/$arch/Release
|
||||
mkdir -p dists/$dist_name/main/binary-i386/
|
||||
dpkg-scanpackages dists/$dist_name/main/binary-i386/ /dev/null | gzip -9c > dists/$dist_name/main/binary-i386/Packages.gz
|
||||
gunzip -c dists/$dist_name/main/binary-i386/Packages.gz > dists/$dist_name/main/binary-i386/Packages
|
||||
# else
|
||||
# echo "Architectures: ppc64el" >> dists/$dist_name/main/$arch/Release
|
||||
fi
|
||||
archs=`ls -1 dists/$dist_name/main | sed "s/binary-//" | tr '\n' ' '`
|
||||
echo "Architectures: $archs" >> dists/$dist_name/main/$arch/Release
|
||||
echo "Description: MariaDB MaxScale" >> dists/$dist_name/main/$arch/Release
|
||||
cp dists/$dist_name/main/$arch/Release dists/$dist_name/Release
|
||||
# cp dists/$dist_name/main/$arch/Packages.gz dists/$dist_name
|
||||
apt-ftparchive release dists/$dist_name/ >> dists/$dist_name/Release
|
||||
if [ $? != 0 ] ; then
|
||||
echo "Repo creation failed!"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
gpg -abs -o dists/$dist_name/Release.gpg dists/$dist_name/Release
|
||||
if [ $? != 0 ] ; then
|
||||
echo "Package signing failed!"
|
||||
exit 1
|
||||
fi
|
||||
else
|
||||
# RPM-based system
|
||||
if [ ${y_res} == 0 ]; then
|
||||
sudo yum install -y createrepo
|
||||
fi
|
||||
if [ ${z_res} == 0 ]; then
|
||||
sudo zypper -n remove patterns-openSUSE-minimal_base-conflicts
|
||||
sudo zypper -n install createrepo
|
||||
fi
|
||||
echo "%_signature gpg" >> ~/.rpmmacros
|
||||
echo "%_gpg_name MariaDB Maxscale" >> ~/.rpmmacros
|
||||
# echo "%_gpg_name MariaDBManager" >> ~/.rpmmacros
|
||||
echo "\r" | setsid rpm --resign $sourcedir/*.rpm
|
||||
|
||||
if [ $? != 0 ] ; then
|
||||
echo "Package signing failed!"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
cp $sourcedir/* $destdir/
|
||||
pushd ${destdir} >/dev/null 2>&1
|
||||
createrepo -d -s sha .
|
||||
if [ $? != 0 ] ; then
|
||||
echo "Repo creation failed!"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
popd >/dev/null 2>&1
|
||||
gpg --output repomd.xml.key --sign $destdir/repodata/repomd.xml
|
||||
gpg -a --detach-sign $destdir/repodata/repomd.xml
|
||||
if [ $? != 0 ] ; then
|
||||
echo "Package signing failed!"
|
||||
exit 1
|
||||
fi
|
||||
fi
|
15
BUILD/mdbci/generate_build_info_path.sh
Executable file
15
BUILD/mdbci/generate_build_info_path.sh
Executable file
@ -0,0 +1,15 @@
|
||||
#! /bin/bash
|
||||
|
||||
set -x
|
||||
|
||||
export web_prefix=$(echo $path_prefix | sed "s|${repo_path}/||g")
|
||||
|
||||
if [ "$box_type" == "RPM" ] ; then
|
||||
export build_info_file="$platform/$platform_version/$arch/build_info"
|
||||
else
|
||||
export build_info_file="$platform_family/dists/$platform_version/main/binary-$arch/build_info"
|
||||
fi
|
||||
|
||||
echo "BUILD_PATH_INFO=$web_prefix/$build_info_file" > $dir/build_info_env_var_$BUILD_ID
|
||||
|
||||
export build_info_path=$path_prefix/$build_info_file
|
1
BUILD/mdbci/local_rep.sh
Normal file
1
BUILD/mdbci/local_rep.sh
Normal file
@ -0,0 +1 @@
|
||||
export ci_url="http://192.168.122.1/repository"
|
79
BUILD/mdbci/remote_build.sh
Executable file
79
BUILD/mdbci/remote_build.sh
Executable file
@ -0,0 +1,79 @@
|
||||
#!/bin/bash
|
||||
|
||||
# Copyies stuff to VM, run build on VM and copies binaries
|
||||
# to $pre_repo_dir/$target/$box
|
||||
|
||||
set -x
|
||||
|
||||
|
||||
rm -rf $pre_repo_dir/$target/$box
|
||||
mkdir -p $pre_repo_dir/$target/SRC
|
||||
mkdir -p $pre_repo_dir/$target/$box
|
||||
|
||||
export work_dir="MaxScale"
|
||||
export orig_image=$box
|
||||
|
||||
ssh $sshopt "sudo rm -rf $work_dir"
|
||||
echo "copying stuff to $image machine"
|
||||
ssh $sshopt "mkdir -p $work_dir"
|
||||
|
||||
rsync -avz --progress --delete -e "ssh $scpopt" ${script_dir}/../../* $sshuser@$IP:./$work_dir/
|
||||
if [ $? -ne 0 ] ; then
|
||||
echo "Error copying stuff to $box machine"
|
||||
exit 2
|
||||
fi
|
||||
|
||||
export install_script="install_build_deps.sh"
|
||||
|
||||
if [ "$box_type" == "RPM" ] ; then
|
||||
build_script="build_rpm_local.sh"
|
||||
files="*.rpm"
|
||||
tars="$product_name*.tar.gz"
|
||||
else
|
||||
build_script="build_deb_local.sh"
|
||||
files="../*.deb"
|
||||
tars="$product_name*.tar.gz"
|
||||
fi
|
||||
|
||||
export remote_build_cmd="export already_running=\"$already_running\"; \
|
||||
export build_experimental=\"$build_experimental\"; \
|
||||
export cmake_flags=\"$cmake_flags\"; \
|
||||
export work_dir=\"$work_dir\"; \
|
||||
export platform=\"$platform\"; \
|
||||
export platform_version=\"$platform_version\"; \
|
||||
export source=\"$source\"; \
|
||||
export BUILD_TAG=\"$BUILD_TAG\"; \
|
||||
"
|
||||
|
||||
if [ "$already_running" != "ok" ]
|
||||
then
|
||||
echo "install packages on $image"
|
||||
ssh $sshopt "$remote_build_cmd ./MaxScale/BUILD/$install_script"
|
||||
installres=$?
|
||||
if [ $installres -ne 0 ]
|
||||
then
|
||||
exit $installres
|
||||
fi
|
||||
|
||||
$HOME/mdbci/mdbci snapshot take --path-to-nodes $box --snapshot-name clean
|
||||
|
||||
else
|
||||
echo "already running VM, not installing deps"
|
||||
fi
|
||||
|
||||
echo "run build on $box"
|
||||
ssh $sshopt "$remote_build_cmd ./MaxScale/BUILD/$build_script"
|
||||
if [ $? -ne 0 ] ; then
|
||||
echo "Error build on $box"
|
||||
exit 4
|
||||
fi
|
||||
|
||||
echo "copying binaries to the '$pre_repo_dir/$target/$box'"
|
||||
scp $scpopt $sshuser@$IP:$work_dir/$files $pre_repo_dir/$target/$box/
|
||||
scp $scpopt $sshuser@$IP:$work_dir/$tars $pre_repo_dir/$target/$box/
|
||||
|
||||
|
||||
echo "package building for '$target' for '$platform' '$platform_version' done!"
|
||||
|
||||
|
||||
|
82
BUILD/mdbci/set_build_variables.sh
Normal file
82
BUILD/mdbci/set_build_variables.sh
Normal file
@ -0,0 +1,82 @@
|
||||
#!/bin/bash
|
||||
|
||||
# Defines defaults values for all uninitialized environmental variables
|
||||
# In case of running from Jenkins all values go from Jenkins parameters
|
||||
|
||||
export dir=`pwd`
|
||||
|
||||
export MDBCI_VM_PATH=${MDBCI_VM_PATH:-$HOME/vms}
|
||||
mkdir -p $MDBCI_VM_PATH
|
||||
echo "MDBCI_VM_PATH=$MDBCI_VM_PATH"
|
||||
|
||||
export box=${box:-"centos_7_libvirt"}
|
||||
echo "box=$box"
|
||||
|
||||
# get commit ID
|
||||
commitID=`git log | head -1 | sed "s/commit //"`
|
||||
echo "commitID $commitID"
|
||||
|
||||
export branch=`git symbolic-ref --short HEAD`
|
||||
export curr_date=`date '+%Y-%m-%d_%H-%M'`
|
||||
|
||||
export source=${source:-"$branch"}
|
||||
echo "source=$source"
|
||||
|
||||
#hack to get rid of Jenkins artifacts
|
||||
export target=`echo $target | tr -cd "[:print:]" | sed "s/?//g" | sed "s/ //g"`
|
||||
|
||||
export target=${target:-"$source-$curr_date"}
|
||||
echo "target=$target"
|
||||
|
||||
export product_name=${product_name:-"maxscale"}
|
||||
|
||||
export build_experimental=${build_experimental:-"yes"}
|
||||
|
||||
export gpg_keys_path=${gpg_keys_path:-"$HOME/maxscale_gpg_keys/"}
|
||||
|
||||
export pre_repo_dir=${pre_repo_dir:-"$HOME/pre-repo/"}
|
||||
|
||||
export unsorted_repo_dir=${unsorted_repo_dir:-"$HOME/repo/"}
|
||||
|
||||
export box_type="RPM"
|
||||
echo $box | grep -i ubuntu
|
||||
if [ $? == 0 ] ; then
|
||||
export box_type="DEB"
|
||||
export platform_family="ubuntu"
|
||||
fi
|
||||
echo $box | grep -i deb
|
||||
if [ $? == 0 ] ; then
|
||||
export box_type="DEB"
|
||||
export platform_family="debian"
|
||||
fi
|
||||
|
||||
export cmake_flags=${cmake_flags:-"-DBUILD_TESTS=Y -DCMAKE_BUILD_TYPE=Debug -DBUILD_MMMON=Y -DBUILD_AVRO=Y -DBUILD_CDC=Y"}
|
||||
echo "cmake_flags=$cmake_flags"
|
||||
|
||||
export do_not_destroy_vm=${do_not_destroy_vm:-"no"}
|
||||
|
||||
export try_already_running=${try_already_running:-"no"}
|
||||
|
||||
export JOB_NAME=${JOB_NAME:-"local_build"}
|
||||
|
||||
export BUILD_NUMBER=${BUILD_NUMBER:-`date '+%Y%m%d%H%M'`}
|
||||
|
||||
export BUILD_TAG=${BUILD_TAG:-jenkins-${JOB_NAME}-${BUILD_NUMBER}}
|
||||
|
||||
export mdbci_dir=${mdbci_dir:-"$HOME/mdbci/"}
|
||||
|
||||
export repo_name=$target
|
||||
|
||||
export repo_path=${repo_path:-$HOME/repository}
|
||||
|
||||
export path_prefix="$repo_path/$repo_name/mariadb-$product_name/"
|
||||
|
||||
export ci_url=${ci_url:-"http://max-tst-01.mariadb.com/ci-repository/"}
|
||||
|
||||
export deb_repo_key=${deb_repo_key:-"135659e928c12247"}
|
||||
|
||||
export rpm_repo_key=${rpm_repo_key:-"$ci_url/MariaDBMaxscale-GPG-KEY.public"}
|
||||
|
||||
export run_upgrade_test=${run_upgrade_test:-"no"}
|
||||
|
||||
export production_url=${production_url:-"https://downloads.mariadb.com/MaxScale/"}
|
8
BUILD/mdbci/templates/build.json.template
Normal file
8
BUILD/mdbci/templates/build.json.template
Normal file
@ -0,0 +1,8 @@
|
||||
{
|
||||
"build" :
|
||||
{
|
||||
"hostname" : "default",
|
||||
"box" : "$box"
|
||||
}
|
||||
}
|
||||
|
11
BUILD/mdbci/templates/install.json.template
Normal file
11
BUILD/mdbci/templates/install.json.template
Normal file
@ -0,0 +1,11 @@
|
||||
{
|
||||
"maxscale" :
|
||||
{
|
||||
"hostname" : "maxscale",
|
||||
"box" : "$box",
|
||||
"product" : {
|
||||
"name": "maxscale"
|
||||
}
|
||||
|
||||
}
|
||||
}
|
10
BUILD/mdbci/templates/repository-config/deb.json.template
Normal file
10
BUILD/mdbci/templates/repository-config/deb.json.template
Normal file
@ -0,0 +1,10 @@
|
||||
[
|
||||
{
|
||||
"product": "maxscale",
|
||||
"version": "default",
|
||||
"repo": "${ci_url}/${web_prefix}/${platform_family} ${platform_version} main",
|
||||
"repo_key": "$deb_repo_key70E4618A8167EE24",
|
||||
"platform": "$platform",
|
||||
"platform_version": "${platform_version}"
|
||||
}
|
||||
]
|
10
BUILD/mdbci/templates/repository-config/rpm.json.template
Normal file
10
BUILD/mdbci/templates/repository-config/rpm.json.template
Normal file
@ -0,0 +1,10 @@
|
||||
[
|
||||
{
|
||||
"product": "maxscale",
|
||||
"version": "default",
|
||||
"repo": "${ci_url}/$web_prefix/centos/${platform_version}/\$basearch",
|
||||
"repo_key": "${rpm_repo_key}",
|
||||
"platform": "$platform",
|
||||
"platform_version": "${platform_version}"
|
||||
}
|
||||
]
|
138
BUILD/mdbci/upgrade_test.sh
Executable file
138
BUILD/mdbci/upgrade_test.sh
Executable file
@ -0,0 +1,138 @@
|
||||
#!/bin/bash
|
||||
|
||||
set -x
|
||||
|
||||
# read the name of build scripts directory
|
||||
export script_dir="$(dirname $(readlink -f $0))"
|
||||
|
||||
# load all needed variables
|
||||
. ${script_dir}/set_build_variables.sh
|
||||
|
||||
export maxadmin_command=${maxadmin_command:-"sudo maxadmin show services"}
|
||||
|
||||
export old_target=${old_target:-"2.1.9"}
|
||||
export old_target=`echo $old_target | sed "s/?//g"`
|
||||
|
||||
provider=`${mdbci_dir}/mdbci show provider $box --silent 2> /dev/null`
|
||||
name=$box-${JOB_NAME}-${BUILD_NUMBER}_upgradetest
|
||||
name=`echo $name | sed "s|/|-|g"`
|
||||
|
||||
|
||||
cp ${script_dir}/install.json.template ${MDBCI_VM_PATH}/$name.json
|
||||
|
||||
eval "cat <<EOF
|
||||
$(<${script_dir}/templates/install.json.template)
|
||||
" 2> /dev/null > $MDBCI_VM_PATH/${name}.json
|
||||
|
||||
|
||||
while [ -f ~/vagrant_lock ]
|
||||
do
|
||||
sleep 5
|
||||
done
|
||||
touch ~/vagrant_lock
|
||||
echo $JOB_NAME-$BUILD_NUMBER >> ~/vagrant_lock
|
||||
|
||||
# destroying existing box
|
||||
if [ -d "install_$box" ]; then
|
||||
cd $MDBCI_VM_PATH/$name
|
||||
vagrant destroy -f
|
||||
cd $dir
|
||||
fi
|
||||
|
||||
${mdbci_dir}/repository-config/generate_all.sh repo.d
|
||||
${mdbci_dir}/repository-config/maxscale-release.sh $old_target repo.d
|
||||
|
||||
# starting VM for build
|
||||
${mdbci_dir}/mdbci --override --template $MDBCI_VM_PATH/$name.json --repo-dir $dir/repo.d generate $name
|
||||
${mdbci_dir}/mdbci up $name --attempts=1
|
||||
if [ $? != 0 ] ; then
|
||||
if [ $? != 0 ] ; then
|
||||
echo "Error starting VM"
|
||||
cd ${MDBCI_VM_PATH}/$name
|
||||
if [ "x$do_not_destroy_vm" != "xyes" ] ; then
|
||||
vagrant destroy -f
|
||||
fi
|
||||
cd $dir
|
||||
rm ~/vagrant_lock
|
||||
exit 1
|
||||
fi
|
||||
fi
|
||||
|
||||
rm ~/vagrant_lock
|
||||
|
||||
# get VM info
|
||||
export sshuser=`${mdbci_dir}/mdbci ssh --command 'whoami' --silent $name/maxscale 2> /dev/null | tr -d '\r'`
|
||||
export IP=`${mdbci_dir}/mdbci show network $name/maxscale --silent 2> /dev/null`
|
||||
export sshkey=`${mdbci_dir}/mdbci show keyfile $name/maxscale --silent 2> /dev/null | sed 's/"//g'`
|
||||
export scpopt="-i $sshkey -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no -o ConnectTimeout=120 "
|
||||
export sshopt="$scpopt $sshuser@$IP"
|
||||
|
||||
old_version=`ssh $sshopt "maxscale --version" `
|
||||
|
||||
rm -rf repo.d
|
||||
${mdbci_dir}/repository-config/generate_all.sh repo.d
|
||||
${mdbci_dir}/repository-config/maxscale-ci.sh $target repo.d
|
||||
|
||||
${mdbci_dir}/mdbci setup_repo --product maxscale --repo-dir $dir/repo.d $name/maxscale
|
||||
${mdbci_dir}/mdbci install_product --product maxscale $name/maxscale
|
||||
|
||||
res=$?
|
||||
|
||||
new_version=`ssh $sshopt "maxscale --version" `
|
||||
|
||||
echo "old version: '${old_version}', new version: '${new_version}'"
|
||||
if [ "${old_version}" == "${new_version}" ]; then
|
||||
echo "Upgrde was not done!"
|
||||
res=1
|
||||
fi
|
||||
|
||||
export cnf_file=${cnf_file:-"maxscale.cnf.minimum"}
|
||||
|
||||
scp $scpopt ${script_dir}/cnf/$cnf_file $sshuser@$IP:~/
|
||||
|
||||
. ${script_dir}/configure_log_dir.sh
|
||||
|
||||
${mdbci_dir}/mdbci ssh --command 'service --help' $name/maxscale
|
||||
if [ $? == 0 ] ; then
|
||||
maxscale_start_cmd="sudo service maxscale start"
|
||||
else
|
||||
${mdbci_dir}/mdbci ssh --command 'echo \"/usr/bin/maxscale 2> /dev/null &\" > maxscale_start.sh; echo \"disown\" >> maxscale_start.sh; chmod a+x maxscale_start.sh' $name/maxscale --silent
|
||||
maxscale_start_cmd="sudo ./maxscale_start.sh 2> /dev/null &"
|
||||
fi
|
||||
|
||||
|
||||
|
||||
ssh $sshopt "sudo cp $cnf_file /etc/maxscale.cnf"
|
||||
ssh $sshopt "$maxscale_start_cmd" &
|
||||
pid_to_kill=$!
|
||||
|
||||
sleep 10
|
||||
|
||||
ssh $sshopt $maxadmin_command
|
||||
if [ $? != 0 ] ; then
|
||||
echo "Maxadmin executing error"
|
||||
res=1
|
||||
fi
|
||||
maxadmin_out=`ssh $sshopt $maxadmin_command`
|
||||
echo $maxadmin_out | grep "CLI"
|
||||
if [ $? != 0 ] ; then
|
||||
echo "CLI service is not found in maxadmin output"
|
||||
res=1
|
||||
fi
|
||||
echo $maxadmin_out | grep "Started"
|
||||
if [ $? != 0 ] ; then
|
||||
echo "'Started' is not found in the CLI service description"
|
||||
res=1
|
||||
fi
|
||||
|
||||
mkdir -p $logs_publish_dir
|
||||
scp $scpopt $sshuser@$IP:/var/log/maxscale/* $logs_publish_dir
|
||||
chmod a+r $logs_publish_dir/*
|
||||
|
||||
if [ "x$do_not_destroy_vm" != "xyes" ] ; then
|
||||
cd $MDBCI_VM_PATH/$name
|
||||
vagrant destroy -f
|
||||
cd $dir
|
||||
fi
|
||||
kill $pid_to_kill
|
||||
exit $res
|
@ -1,6 +0,0 @@
|
||||
cd ~/Maxscale/maxscale-system-test
|
||||
|
||||
cmake .
|
||||
make
|
||||
|
||||
ctest -LE HEAVY -VV
|
Loading…
x
Reference in New Issue
Block a user