#!/bin/bash
set -e -x
export LANG=POSIX
#echo jenkins env
echo "build url:" $BUILD_URL
echo "job url:" $JOB_URL
echo " project git url:" $GIT_URL
echo " git commint:" $GIT_COMMIT
echo " git branch: " $GIT_BRANCH
echo " build number ": $BUILD_NUMBER
#set env
function set_env( ) {
# yum_com="yum --disablerepo=\* --enablerepo=centos-base --releasever=centos7.3-170424 -c /var/lib/jenkins/work/iso_7.3.repo list available | tr -s ' ' | cut -d ' ' -f1,2 | grep i686 | grep centos | cut -d '.' -f1"
yum_com="setarch x86_64 yum --disablerepo=\* --enablerepo=centos-base --releasever=centos7.3-170424 -c /var/lib/jenkins/work/iso_7.3.repo list available \*centos\*.i686 | tr -s ' ' | cut -d '.' -f1"
export PATH=$PATH:/home/ems-git-common:/home/ems-scripts
PRO_NAME_GIT=${GIT_URL##*/}
PROJECT_NAME=${PRO_NAME_GIT/.git/}
if [ "$GIT_BRANCH" = "origin/master" ];then
repo_ver=7
br="master"
cfg=""
elif [ "$GIT_BRANCH" = "origin/ems7.3" ];then
repo_ver=7.3
br="ems7.3"
cfg="ems7.3"
fi
targer_patch="/home/backups/repos/emindserver/${repo_ver}/updates/x86_64"
# targer_patch="/var/lib/jenkins/work/wubo/x86_64"
targer_patch_debug="/home/backups/${repo_ver}/debuginfo/x86_64"
targer_patch_srpm="/home/backups/repos/emindserver.srpm"
}
#delete project under SOURCE resource for resolve build error
function rm_old_source( ) {
git clean -dfx
git reset --hard
git pull origin ${br}:${br}
}
#download resource into SOURCE
function down_new_source( ) {
absolute=$(into_srpm.sh)
if [ $? == 0 ];then
src_rpm_path=${absolute##*:}
else
echo "down source is lose with into_srpm.sh"
exit 1
fi
}
#build src.rpm for mock
function build_mock( ) {
if [ -d result.* ];then
/bin/rm -rf result.*
fi
rpm_patch=$(/bin/mktemp -d result.XXXXX)
if [ -f .arch ];then
cat .arch | while read arch
do
test -z "${arch}" && continue
if [ "${arch}x" = "i386x" ];then
cfg=""
fi
/usr/bin/mock -r ${arch}${cfg} --resultdir $rpm_patch --rebuild ${src_rpm_path} || result="ok"
if [ ${result}xxx != "xxx" ];then
/bin/cat $rpm_patch/root.log
/bin/cat $rpm_patch/build.log
exit 1
fi
done
else
/usr/bin/mock -r x86_64${cfg} --resultdir $rpm_patch --rebuild ${src_rpm_path} || result="ok"
if [ ${result}xxx != "xxx" ];then
/bin/cat $rpm_patch/root.log
/bin/cat $rpm_patch/build.log
exit 1
fi
fi
}
# move rpm to repertory and createrepo
function move_repo( ) {
mv ${rpm_patch}/*.src.rpm ${targer_patch_srpm}
# rm -rf ${rpm_patch}/*debuginfo*
ls ${rpm_patch}/*.i686.rpm && {
for i686_name in `eval ${yum_com}`
do
i686_name=${i686_name/#centos/ems}
mv -f ${rpm_patch}/${i686_name}*.i686.rpm ${targer_patch}/ || true
done
} || true
mv -f ${rpm_patch}/*debuginfo*.rpm ${targer_patch_debug}/ && createrepo --update ${targer_patch_debug} || true
# mv -f ${rpm_patch}/*.rpm ${targer_patch}/
mv -f ${rpm_patch}/*noarch.rpm ${targer_patch}/ || true
mv -f ${rpm_patch}/*x86_64.rpm ${targer_patch}/ || true
rm -rf ${rpm_patch}
createrepo --update ${targer_patch}
}
#control centre
function main ( ) {
set_env
rm_old_source
down_new_source
build_mock
move_repo
}
main
set -e -x
export LANG=POSIX
#echo jenkins env
echo "build url:" $BUILD_URL
echo "job url:" $JOB_URL
echo " project git url:" $GIT_URL
echo " git commint:" $GIT_COMMIT
echo " git branch: " $GIT_BRANCH
echo " build number ": $BUILD_NUMBER
#set env
function set_env( ) {
# yum_com="yum --disablerepo=\* --enablerepo=centos-base --releasever=centos7.3-170424 -c /var/lib/jenkins/work/iso_7.3.repo list available | tr -s ' ' | cut -d ' ' -f1,2 | grep i686 | grep centos | cut -d '.' -f1"
yum_com="setarch x86_64 yum --disablerepo=\* --enablerepo=centos-base --releasever=centos7.3-170424 -c /var/lib/jenkins/work/iso_7.3.repo list available \*centos\*.i686 | tr -s ' ' | cut -d '.' -f1"
export PATH=$PATH:/home/ems-git-common:/home/ems-scripts
PRO_NAME_GIT=${GIT_URL##*/}
PROJECT_NAME=${PRO_NAME_GIT/.git/}
if [ "$GIT_BRANCH" = "origin/master" ];then
repo_ver=7
br="master"
cfg=""
elif [ "$GIT_BRANCH" = "origin/ems7.3" ];then
repo_ver=7.3
br="ems7.3"
cfg="ems7.3"
fi
targer_patch="/home/backups/repos/emindserver/${repo_ver}/updates/x86_64"
# targer_patch="/var/lib/jenkins/work/wubo/x86_64"
targer_patch_debug="/home/backups/${repo_ver}/debuginfo/x86_64"
targer_patch_srpm="/home/backups/repos/emindserver.srpm"
}
#delete project under SOURCE resource for resolve build error
function rm_old_source( ) {
git clean -dfx
git reset --hard
git pull origin ${br}:${br}
}
#download resource into SOURCE
function down_new_source( ) {
absolute=$(into_srpm.sh)
if [ $? == 0 ];then
src_rpm_path=${absolute##*:}
else
echo "down source is lose with into_srpm.sh"
exit 1
fi
}
#build src.rpm for mock
function build_mock( ) {
if [ -d result.* ];then
/bin/rm -rf result.*
fi
rpm_patch=$(/bin/mktemp -d result.XXXXX)
if [ -f .arch ];then
cat .arch | while read arch
do
test -z "${arch}" && continue
if [ "${arch}x" = "i386x" ];then
cfg=""
fi
/usr/bin/mock -r ${arch}${cfg} --resultdir $rpm_patch --rebuild ${src_rpm_path} || result="ok"
if [ ${result}xxx != "xxx" ];then
/bin/cat $rpm_patch/root.log
/bin/cat $rpm_patch/build.log
exit 1
fi
done
else
/usr/bin/mock -r x86_64${cfg} --resultdir $rpm_patch --rebuild ${src_rpm_path} || result="ok"
if [ ${result}xxx != "xxx" ];then
/bin/cat $rpm_patch/root.log
/bin/cat $rpm_patch/build.log
exit 1
fi
fi
}
# move rpm to repertory and createrepo
function move_repo( ) {
mv ${rpm_patch}/*.src.rpm ${targer_patch_srpm}
# rm -rf ${rpm_patch}/*debuginfo*
ls ${rpm_patch}/*.i686.rpm && {
for i686_name in `eval ${yum_com}`
do
i686_name=${i686_name/#centos/ems}
mv -f ${rpm_patch}/${i686_name}*.i686.rpm ${targer_patch}/ || true
done
} || true
mv -f ${rpm_patch}/*debuginfo*.rpm ${targer_patch_debug}/ && createrepo --update ${targer_patch_debug} || true
# mv -f ${rpm_patch}/*.rpm ${targer_patch}/
mv -f ${rpm_patch}/*noarch.rpm ${targer_patch}/ || true
mv -f ${rpm_patch}/*x86_64.rpm ${targer_patch}/ || true
rm -rf ${rpm_patch}
createrepo --update ${targer_patch}
}
#control centre
function main ( ) {
set_env
rm_old_source
down_new_source
build_mock
move_repo
}
main