emd-build.sh
来源:互联网 发布:龙之信条优化设置 编辑:程序博客网 时间:2024/06/14 02:33
#!/bin/bash
set -x
export LANG=POSIX
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
echo " jenkins_home ": $JENKINS_HOME
#set env
function set_env( ) {
PRO_NAME_GIT=${GIT_URL##*/}
PROJECT_NAME=${PRO_NAME_GIT/.git/}
BRANCH_NAME=${GIT_BRANCH##*/}
CPU_NUM=$(cat /proc/cpuinfo | grep "processor" | wc -l)
GBP_DCH="gbp dch -Ra --ignore-branch --spawn-editor=snapshot"
PW="/var/lib/jenkins/pw.sh"
#TARGET="/home/backups/repos-test."
TARGET="/home/backups/repos."
DEPOT="emindlinux"
ARCH_32=i386
ARCH_64=amd64
OPTS="--keyring /etc/apt/trusted.gpg.d/debian-archive-liriver-automatic.gpg --extrapackages cowdancer"
VER_BRANCH=build
COW_PATH="/var/cache/pbuilder"
deb_package="deb_package"
}
#get version
function get_version() {
project_version=$(dpkg-parsechangelog | sed -rne 's,^Version: (.+).*,\1,p')
echo $project_version
}
#set env of depot and chroot
function set_depot_chroot_env( ) {
if [ ${BRANCH_NAME} = "release" -o ${BRANCH_NAME} = "liriver" ];then
BASE_DIST=testing
OTH_DIST=liriver
GBP_DCH+=" --nmu"
URL="ftp://mirrors.emindsoft.com.cn/debian $BASE_DIST main contrib non-free"
OTHERURL="deb ftp://192.168.0.210/emindlinux $OTH_DIST main contrib non-free"
COW_32="${COW_PATH}/base-${BRANCH_NAME}-em-${ARCH_32}.cow"
COW_64="${COW_PATH}/base-${BRANCH_NAME}-em-${ARCH_64}.cow"
elif [ ${BRANCH_NAME} = "master" -o ${BRANCH_NAME} = "liuriver" -o ${BRANCH_NAME} = "develop" ];then
BASE_DIST=testing
OTH_DIST=liuriver
#URL="http://emdmirror.emindos.org:8088/debian $BASE_DIST main contrib non-free"
URL="http://mirrors.emindsoft.com.cn/gov/debian/ $BASE_DIST main contrib non-free"
#OTHERURL="deb http://emdmirror.emindos.org:8088/emindlinux $OTH_DIST main contrib non-free"
OTHERURL="deb http://mirrors.emindsoft.com.cn/gov/emindlinux/ $OTH_DIST main contrib non-free"
COW_32="${COW_PATH}/base-${BRANCH_NAME}-em-${ARCH_32}.cow"
COW_64="${COW_PATH}/base-${BRANCH_NAME}-em-${ARCH_64}.cow"
else
exit 1
fi
#REPRO="reprepro -vb $TARGET includedeb liuriver"
REPRO="reprepro -vb ${TARGET}"
}
# build chroot env
function build_chroot() {
test -d $COW_32 && SUDO_ASKPASS=${PW} sudo -A ARCH=${ARCH_32} DIST=${BRANCH_NAME}-em git-pbuilder update || SUDO_ASKPASS=${PW} sudo -A \
git-pbuilder create --othermirror "$OTHERURL" --basepath $COW_32 --mirror "$URL" ${OPTS} --architecture ${ARCH_32} --distribution $BASE_DIST
test -d $COW_64 && SUDO_ASKPASS=${PW} sudo -A ARCH=${ARCH_64} DIST=${BRANCH_NAME}-em git-pbuilder update || SUDO_ASKPASS=${PW} sudo -A \
git-pbuilder create --othermirror "$OTHERURL" --basepath $COW_64 --mirror "$URL" ${OPTS} --architecture ${ARCH_64} --distribution $BASE_DIST
}
# download balltar
function down_tar() {
tar_dir=tarballs
#test -f debian/watch && uscan --download-current-version || true
[ -d $tar_dir ] && rm -rf $tar_dir || mkdir $tar_dir
test -f debian/watch && uscan --download-current-version --destdir $tar_dir || true
}
#build package
function build_package() {
#arch:amd64,i386,all[amd64 or i386],any[amd64 and i386]
local arch
[ -f debian/control ] && {
arch=$(cat debian/control | grep "^Architecture" | awk -F ":" '{print $2}')
echo $arch | wc
count=$(echo $arch | wc | awk '{print $2}')
if [ $count -gt 1 ];then
arch="all"
else
[ -z $arch ] && arch="any"
fi
arch_array=$(echo $arch)
unset arch
} || {
echo "debian/control is not exist"
exit 1
}
if [ -d result.* ];then
/bin/rm -rf result.*
fi
[ -d $deb_package ] && rm -rf $deb_package || mkdir $deb_package
deb_patch_32=$(/bin/mktemp -d result_32.XXXXX)
deb_patch_64=$(/bin/mktemp -d result_64.XXXXX)
for arch in ${arch_array[@]}
do
echo "===========================现在编译的架构:$arch:===================="
if [ "$arch"x = "any"x ];then
for arch in 32 64
do
build${arch}_package &
done
else
if [ "$arch"x = "amd64"x ];then
arch=64
elif [ "$arch"x = "i386"x ];then
arch=32
elif [ "$arch"x = "all"x ];then
arch=64
fi
build${arch}_package &
fi
done
wait
local flag;
flag=1;
if [ -f $deb_patch_32/b_32.txt ];then
sed -i '$i\============================error32==========================' $deb_patch_32/${PROJECT_NAME}_32.log
cat $deb_patch_32/${PROJECT_NAME}_32.log
flag=2
fi
if [ -f $deb_patch_64/b_64.txt ];then
sed -i '$i\============================error64==========================' $deb_patch_64/${PROJECT_NAME}_64.log
cat $deb_patch_64/${PROJECT_NAME}_64.log
flag=2
fi
[ $flag -gt 1 ] && {
unset flag
exit 1
} || unset flag
}
#build32
function build32_package() {
local flag
SUDO_ASKPASS=${PW} sudo -A gbp buildpackage -j$CPU_NUM -sa --git-pbuilder --git-arch=${ARCH_32} --git-dist=${BRANCH_NAME}-em \
--git-ignore-new --git-ignore-branch --git-export-dir=$deb_patch_32 --git-tarball-dir=$tar_dir --git-keyid=builder@emindsoft.com.cn 1>$deb_patch_32/${PROJECT_NAME}_32.log
flag=$?
if [ $flag -gt 0 ];then
echo "$flag" >$deb_patch_32/b_32.txt
fi
unset flag
}
#build64
function build64_package() {
local flag
SUDO_SKPASS=${PW} sudo -A gbp buildpackage -j$CPU_NUM -sa --git-pbuilder --git-arch=${ARCH_64} --git-dist=${BRANCH_NAME}-em \
--git-ignore-new --git-ignore-branch --git-export-dir=$deb_patch_64 --git-tarball-dir=$tar_dir --git-keyid=builder@emindsoft.com.cn 1>$deb_patch_64/${PROJECT_NAME}_64.log
flag=$?
if [ $flag -gt 0 ];then
echo "$flag" >$deb_patch_64/b_64.txt
fi
unset flag
}
# upgrade version
function upgrade_ver() {
git branch --list -r
git branch --list -r | grep "\<origin/$VER_BRANCH\>" || result=error
if [[ $result = "error" ]];then
git branch $VER_BRANCH
git push --all
upgrade_ver1
else
upgrade_ver1
fi
}
function upgrade_ver1() {
FLAG=true
while($FLAG)
do
git rebase origin/build
$GBP_DCH
git add debian/changelog
local version=$(dpkg-parsechangelog | grep "^Version")
version=$(dpkg-parsechangelog | grep "^Version")
git commit -m "<UPGRADE> upgrade $PROJECT_NAME of ${version}"
unset version
build_package
git pull origin $VER_BRANCH
git rebase origin/build
if [ "0" != "$?" ]; then
git rebase --abort
git reset --hard
git clean -dfx
git checkout origin/master
else
#git push origin HEAD:build
FLAG=false
fi
done
}
# move deb to repo
function move_repo_old() {
#Deleting files just added to the pool but not used
local flag
local flag1
flag1=1
SUDO_ASKPASS=${PW} sudo -A ${REPRO}${OTH_DIST}/$DEPOT includedeb ${OTH_DIST} $deb_patch*/*.deb
flag=$?
if [ $flag -gt 0 ];then
flag1=2
fi
unset flag
if [[ $OTH_DIST="liriver" ]];then
OTH_DIST=liuriver
local flag
SUDO_ASKPASS=${PW} sudo -A ${REPRO}${OTH_DIST}/$DEPOT includedeb ${OTH_DIST} $deb_patch*/*.deb
flag=$?
if [ $flag -gt 0 ];then
flag1=2
fi
unset flag
fi
if [ ${flag1} -gt 1 ];then
echo "编译包没问题,进入仓库出现问题,版本号不升级"
unset flag1
exit 1
else
git push origin HEAD:build
unset flag1
fi
}
# move deb to repo
function move_repo() {
local flag
local flag1
local result
cp -af $deb_patch*/*.deb $deb_package
if [ ${BRANCH_NAME} = "develop" ];then
REPO="-test"
else
REPO=""
fi
flag1=1
result=$(SUDO_ASKPASS=${PW} sudo -A ${REPRO}${OTH_DIST}/$DEPOT includedeb ${OTH_DIST}${REPO} $deb_package/*.deb)
flag=$?
if [ $flag -gt 0 ];then
flag1=2
fi
unset flag
if [ ${BRANCH_NAME} = "liriver" ];then
REPO="-test"
fi
if [ $OTH_DIST="liriver" -o ${BRANCH_NAME}="release" ];then
OTH_DIST=liuriver
local flag
result=$(SUDO_ASKPASS=${PW} sudo -A ${REPRO}${OTH_DIST}/$DEPOT includedeb ${OTH_DIST}${REPO} $deb_package/*.deb)
flag=$?
if [ $flag -gt 0 ];then
flag1=2
fi
unset flag
fi
pushd $TARGET${OTH_DIST}/$DEPOT >/dev/null
local Depot
Depot=$(sudo reprepro list $OTH_DIST | grep $PROJECT_NAME)
popd > /dev/null
local version=$(dpkg-parsechangelog | grep "^Version")
if [ ${flag1} -gt 1 ];then
echo "编译包没问题,进入仓库出现问题,md5或是sha1出现问题,同版本号进入仓库有问题。建议升个小版本好即可.重新提交,重新编译"
echo "当前的版本号:$version"
echo "仓库的版本号:$Depot"
echo "运行命令:${GBP_DCH}"
unset flag1
exit 1
fi
if [ "${result}" ];then
echo ${result} | grep "Deleting files just added to the pool but not used"
if [ ! $? -gt 0 ];then
echo "版本号小于仓库中的版本号."
echo "当前的版本号:$version"
echo "仓库的版本号:$Depot"
unset flag1
unset Depot
unset version
exit 1
fi
fi
}
#control centre
function main() {
set_env
set_depot_chroot_env
build_chroot
down_tar
build_package
# upgrade_ver
move_repo
# move_repo_old
}
main
set -x
export LANG=POSIX
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
echo " jenkins_home ": $JENKINS_HOME
#set env
function set_env( ) {
PRO_NAME_GIT=${GIT_URL##*/}
PROJECT_NAME=${PRO_NAME_GIT/.git/}
BRANCH_NAME=${GIT_BRANCH##*/}
CPU_NUM=$(cat /proc/cpuinfo | grep "processor" | wc -l)
GBP_DCH="gbp dch -Ra --ignore-branch --spawn-editor=snapshot"
PW="/var/lib/jenkins/pw.sh"
#TARGET="/home/backups/repos-test."
TARGET="/home/backups/repos."
DEPOT="emindlinux"
ARCH_32=i386
ARCH_64=amd64
OPTS="--keyring /etc/apt/trusted.gpg.d/debian-archive-liriver-automatic.gpg --extrapackages cowdancer"
VER_BRANCH=build
COW_PATH="/var/cache/pbuilder"
deb_package="deb_package"
}
#get version
function get_version() {
project_version=$(dpkg-parsechangelog | sed -rne 's,^Version: (.+).*,\1,p')
echo $project_version
}
#set env of depot and chroot
function set_depot_chroot_env( ) {
if [ ${BRANCH_NAME} = "release" -o ${BRANCH_NAME} = "liriver" ];then
BASE_DIST=testing
OTH_DIST=liriver
GBP_DCH+=" --nmu"
URL="ftp://mirrors.emindsoft.com.cn/debian $BASE_DIST main contrib non-free"
OTHERURL="deb ftp://192.168.0.210/emindlinux $OTH_DIST main contrib non-free"
COW_32="${COW_PATH}/base-${BRANCH_NAME}-em-${ARCH_32}.cow"
COW_64="${COW_PATH}/base-${BRANCH_NAME}-em-${ARCH_64}.cow"
elif [ ${BRANCH_NAME} = "master" -o ${BRANCH_NAME} = "liuriver" -o ${BRANCH_NAME} = "develop" ];then
BASE_DIST=testing
OTH_DIST=liuriver
#URL="http://emdmirror.emindos.org:8088/debian $BASE_DIST main contrib non-free"
URL="http://mirrors.emindsoft.com.cn/gov/debian/ $BASE_DIST main contrib non-free"
#OTHERURL="deb http://emdmirror.emindos.org:8088/emindlinux $OTH_DIST main contrib non-free"
OTHERURL="deb http://mirrors.emindsoft.com.cn/gov/emindlinux/ $OTH_DIST main contrib non-free"
COW_32="${COW_PATH}/base-${BRANCH_NAME}-em-${ARCH_32}.cow"
COW_64="${COW_PATH}/base-${BRANCH_NAME}-em-${ARCH_64}.cow"
else
exit 1
fi
#REPRO="reprepro -vb $TARGET includedeb liuriver"
REPRO="reprepro -vb ${TARGET}"
}
# build chroot env
function build_chroot() {
test -d $COW_32 && SUDO_ASKPASS=${PW} sudo -A ARCH=${ARCH_32} DIST=${BRANCH_NAME}-em git-pbuilder update || SUDO_ASKPASS=${PW} sudo -A \
git-pbuilder create --othermirror "$OTHERURL" --basepath $COW_32 --mirror "$URL" ${OPTS} --architecture ${ARCH_32} --distribution $BASE_DIST
test -d $COW_64 && SUDO_ASKPASS=${PW} sudo -A ARCH=${ARCH_64} DIST=${BRANCH_NAME}-em git-pbuilder update || SUDO_ASKPASS=${PW} sudo -A \
git-pbuilder create --othermirror "$OTHERURL" --basepath $COW_64 --mirror "$URL" ${OPTS} --architecture ${ARCH_64} --distribution $BASE_DIST
}
# download balltar
function down_tar() {
tar_dir=tarballs
#test -f debian/watch && uscan --download-current-version || true
[ -d $tar_dir ] && rm -rf $tar_dir || mkdir $tar_dir
test -f debian/watch && uscan --download-current-version --destdir $tar_dir || true
}
#build package
function build_package() {
#arch:amd64,i386,all[amd64 or i386],any[amd64 and i386]
local arch
[ -f debian/control ] && {
arch=$(cat debian/control | grep "^Architecture" | awk -F ":" '{print $2}')
echo $arch | wc
count=$(echo $arch | wc | awk '{print $2}')
if [ $count -gt 1 ];then
arch="all"
else
[ -z $arch ] && arch="any"
fi
arch_array=$(echo $arch)
unset arch
} || {
echo "debian/control is not exist"
exit 1
}
if [ -d result.* ];then
/bin/rm -rf result.*
fi
[ -d $deb_package ] && rm -rf $deb_package || mkdir $deb_package
deb_patch_32=$(/bin/mktemp -d result_32.XXXXX)
deb_patch_64=$(/bin/mktemp -d result_64.XXXXX)
for arch in ${arch_array[@]}
do
echo "===========================现在编译的架构:$arch:===================="
if [ "$arch"x = "any"x ];then
for arch in 32 64
do
build${arch}_package &
done
else
if [ "$arch"x = "amd64"x ];then
arch=64
elif [ "$arch"x = "i386"x ];then
arch=32
elif [ "$arch"x = "all"x ];then
arch=64
fi
build${arch}_package &
fi
done
wait
local flag;
flag=1;
if [ -f $deb_patch_32/b_32.txt ];then
sed -i '$i\============================error32==========================' $deb_patch_32/${PROJECT_NAME}_32.log
cat $deb_patch_32/${PROJECT_NAME}_32.log
flag=2
fi
if [ -f $deb_patch_64/b_64.txt ];then
sed -i '$i\============================error64==========================' $deb_patch_64/${PROJECT_NAME}_64.log
cat $deb_patch_64/${PROJECT_NAME}_64.log
flag=2
fi
[ $flag -gt 1 ] && {
unset flag
exit 1
} || unset flag
}
#build32
function build32_package() {
local flag
SUDO_ASKPASS=${PW} sudo -A gbp buildpackage -j$CPU_NUM -sa --git-pbuilder --git-arch=${ARCH_32} --git-dist=${BRANCH_NAME}-em \
--git-ignore-new --git-ignore-branch --git-export-dir=$deb_patch_32 --git-tarball-dir=$tar_dir --git-keyid=builder@emindsoft.com.cn 1>$deb_patch_32/${PROJECT_NAME}_32.log
flag=$?
if [ $flag -gt 0 ];then
echo "$flag" >$deb_patch_32/b_32.txt
fi
unset flag
}
#build64
function build64_package() {
local flag
SUDO_SKPASS=${PW} sudo -A gbp buildpackage -j$CPU_NUM -sa --git-pbuilder --git-arch=${ARCH_64} --git-dist=${BRANCH_NAME}-em \
--git-ignore-new --git-ignore-branch --git-export-dir=$deb_patch_64 --git-tarball-dir=$tar_dir --git-keyid=builder@emindsoft.com.cn 1>$deb_patch_64/${PROJECT_NAME}_64.log
flag=$?
if [ $flag -gt 0 ];then
echo "$flag" >$deb_patch_64/b_64.txt
fi
unset flag
}
# upgrade version
function upgrade_ver() {
git branch --list -r
git branch --list -r | grep "\<origin/$VER_BRANCH\>" || result=error
if [[ $result = "error" ]];then
git branch $VER_BRANCH
git push --all
upgrade_ver1
else
upgrade_ver1
fi
}
function upgrade_ver1() {
FLAG=true
while($FLAG)
do
git rebase origin/build
$GBP_DCH
git add debian/changelog
local version=$(dpkg-parsechangelog | grep "^Version")
version=$(dpkg-parsechangelog | grep "^Version")
git commit -m "<UPGRADE> upgrade $PROJECT_NAME of ${version}"
unset version
build_package
git pull origin $VER_BRANCH
git rebase origin/build
if [ "0" != "$?" ]; then
git rebase --abort
git reset --hard
git clean -dfx
git checkout origin/master
else
#git push origin HEAD:build
FLAG=false
fi
done
}
# move deb to repo
function move_repo_old() {
#Deleting files just added to the pool but not used
local flag
local flag1
flag1=1
SUDO_ASKPASS=${PW} sudo -A ${REPRO}${OTH_DIST}/$DEPOT includedeb ${OTH_DIST} $deb_patch*/*.deb
flag=$?
if [ $flag -gt 0 ];then
flag1=2
fi
unset flag
if [[ $OTH_DIST="liriver" ]];then
OTH_DIST=liuriver
local flag
SUDO_ASKPASS=${PW} sudo -A ${REPRO}${OTH_DIST}/$DEPOT includedeb ${OTH_DIST} $deb_patch*/*.deb
flag=$?
if [ $flag -gt 0 ];then
flag1=2
fi
unset flag
fi
if [ ${flag1} -gt 1 ];then
echo "编译包没问题,进入仓库出现问题,版本号不升级"
unset flag1
exit 1
else
git push origin HEAD:build
unset flag1
fi
}
# move deb to repo
function move_repo() {
local flag
local flag1
local result
cp -af $deb_patch*/*.deb $deb_package
if [ ${BRANCH_NAME} = "develop" ];then
REPO="-test"
else
REPO=""
fi
flag1=1
result=$(SUDO_ASKPASS=${PW} sudo -A ${REPRO}${OTH_DIST}/$DEPOT includedeb ${OTH_DIST}${REPO} $deb_package/*.deb)
flag=$?
if [ $flag -gt 0 ];then
flag1=2
fi
unset flag
if [ ${BRANCH_NAME} = "liriver" ];then
REPO="-test"
fi
if [ $OTH_DIST="liriver" -o ${BRANCH_NAME}="release" ];then
OTH_DIST=liuriver
local flag
result=$(SUDO_ASKPASS=${PW} sudo -A ${REPRO}${OTH_DIST}/$DEPOT includedeb ${OTH_DIST}${REPO} $deb_package/*.deb)
flag=$?
if [ $flag -gt 0 ];then
flag1=2
fi
unset flag
fi
pushd $TARGET${OTH_DIST}/$DEPOT >/dev/null
local Depot
Depot=$(sudo reprepro list $OTH_DIST | grep $PROJECT_NAME)
popd > /dev/null
local version=$(dpkg-parsechangelog | grep "^Version")
if [ ${flag1} -gt 1 ];then
echo "编译包没问题,进入仓库出现问题,md5或是sha1出现问题,同版本号进入仓库有问题。建议升个小版本好即可.重新提交,重新编译"
echo "当前的版本号:$version"
echo "仓库的版本号:$Depot"
echo "运行命令:${GBP_DCH}"
unset flag1
exit 1
fi
if [ "${result}" ];then
echo ${result} | grep "Deleting files just added to the pool but not used"
if [ ! $? -gt 0 ];then
echo "版本号小于仓库中的版本号."
echo "当前的版本号:$version"
echo "仓库的版本号:$Depot"
unset flag1
unset Depot
unset version
exit 1
fi
fi
}
#control centre
function main() {
set_env
set_depot_chroot_env
build_chroot
down_tar
build_package
# upgrade_ver
move_repo
# move_repo_old
}
main
阅读全文
0 0
- emd-build.sh
- build.sh
- EMD
- EMD
- EMD
- EMD
- build/envsetup.sh分析
- build/envsetup.sh简记
- build/envsetup.sh分析
- build/envsetup.sh 简介
- 关于build/envsetup.sh
- 关于build/envsetup.sh
- /build/envsetup.sh
- build/envsetup.sh 简介
- build/envsetup.sh简记
- build/envsetup.sh分析
- build/envsetup.sh 简介
- build/envsetup.sh 学习
- 智能合约源文件的基本要素
- [svc]nginx常用功能配置
- qsort和sort的区别
- 用python-pandas作图矩阵
- ios横竖屏转换相关<全屏播放界面处理>
- emd-build.sh
- BootStrap框架学习-下拉款Select搜索功能
- PLSQL创建表空间并且导入.dmp文件
- Activity 生命周期
- 支付宝电脑网站支付,也就是老版的即时到账
- 读《读库1704》
- Slave failed to initialize relay log info structure from the repository, Error_code: 1872
- Hibernate添加log4j的实现
- 【背包专题】J