-
Notifications
You must be signed in to change notification settings - Fork 335
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
Showing
22 changed files
with
1,244 additions
and
818 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -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 | ||
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -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 | ||
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -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 | ||
|
||
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -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} | ||
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -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 |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -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/ |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -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 |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -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 |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1 @@ | ||
export ci_url="http://192.168.122.1/repository" |
Oops, something went wrong.