Skip to content

Commit

Permalink
Merge branch '2.1' into 2.2
Browse files Browse the repository at this point in the history
  • Loading branch information
markus456 committed Nov 27, 2017
2 parents dc2286c + a418804 commit a72956e
Show file tree
Hide file tree
Showing 22 changed files with 1,244 additions and 818 deletions.
142 changes: 142 additions & 0 deletions BUILD/mdbci/build.sh
@@ -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 changes: 15 additions & 0 deletions BUILD/mdbci/cnf/maxscale.cnf.minimum
@@ -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 changes: 16 additions & 0 deletions BUILD/mdbci/cnf/maxscale.cnf.minimum.1.4.4
@@ -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 changes: 15 additions & 0 deletions BUILD/mdbci/configure_log_dir.sh
@@ -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 changes: 36 additions & 0 deletions BUILD/mdbci/copy_repos.sh
@@ -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 changes: 37 additions & 0 deletions BUILD/mdbci/create_remote_repo.sh
@@ -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 changes: 97 additions & 0 deletions BUILD/mdbci/create_repo.sh
@@ -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 changes: 15 additions & 0 deletions BUILD/mdbci/generate_build_info_path.sh
@@ -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 change: 1 addition & 0 deletions BUILD/mdbci/local_rep.sh
@@ -0,0 +1 @@
export ci_url="http://192.168.122.1/repository"

0 comments on commit a72956e

Please sign in to comment.