mirror of
https://github.com/ClickHouse/ClickHouse.git
synced 2024-11-14 11:33:46 +00:00
158 lines
4.5 KiB
Bash
158 lines
4.5 KiB
Bash
|
function add_daemon_impl {
|
||
|
local daemon=$1
|
||
|
local control=$CONTROL
|
||
|
local dependencies=$2
|
||
|
local description_short="${daemon%-metrika-yandex/ daemon}"
|
||
|
local description_full=$3
|
||
|
|
||
|
echo -e "\n\n" >> $control;
|
||
|
echo "Package: $daemon" >> $control;
|
||
|
echo "Section: libdevel" >> $control;
|
||
|
echo "Architecture: any" >> $control;
|
||
|
|
||
|
echo -n "Depends: \${shlibs:Depends}, \${misc:Depends}" >> $control;
|
||
|
for dependency in $dependencies
|
||
|
do
|
||
|
echo -n ", $dependency" >> $control
|
||
|
done
|
||
|
echo >> $control
|
||
|
|
||
|
echo "Description: $description_short" >> $control;
|
||
|
echo " $description_full" >> $control;
|
||
|
}
|
||
|
|
||
|
function add_daemon {
|
||
|
add_daemon_impl "$DAEMON_PKG-metrika-yandex" "$1" "$2"
|
||
|
}
|
||
|
|
||
|
# Создаём файл control из control.in.
|
||
|
# добавляет в файл CONTROL секции для демонов из DAEMONS
|
||
|
function make_control {
|
||
|
local CONTROL="$1"
|
||
|
local DAEMONS="$2"
|
||
|
rm -f $CONTROL
|
||
|
cp -f $CONTROL.in $CONTROL
|
||
|
for DAEMON_PKG in $DAEMONS
|
||
|
do
|
||
|
case "$DAEMON_PKG" in
|
||
|
'clickhouse-server' )
|
||
|
add_daemon_impl clickhouse-server-base '' 'clickhouse-server binary'
|
||
|
add_daemon_impl clickhouse-server-metrika "clickhouse-server-base(=0.0.$REVISION)" 'Configuration files specific for Metrika project for clickhouse-server-base package'
|
||
|
add_daemon_impl clickhouse-server-common "clickhouse-server-base(=0.0.$REVISION)" 'Common configuration files for clickhouse-server-base package'
|
||
|
;;
|
||
|
'clickhouse-client' )
|
||
|
add_daemon_impl clickhouse-client
|
||
|
;;
|
||
|
esac
|
||
|
done
|
||
|
}
|
||
|
|
||
|
# Генерируем номер ревизии.
|
||
|
# выставляются переменные окружения REVISION, AUTHOR
|
||
|
function gen_revision_author {
|
||
|
# GIT
|
||
|
git fetch --tags
|
||
|
IS_IT_GITHUB=$( git config --get remote.origin.url | grep 'github')
|
||
|
|
||
|
REVISION=$( git tag | awk '/[0-9]+/ {print $0;}' | tail -1 | sed s/[^0-9]*//g)
|
||
|
MAX_REVISION=$(($REVISION + 10)) # Максимальное количество попыток отправить тег в Git.
|
||
|
|
||
|
# Создадим номер ревизии и попытаемся залить на сервер.
|
||
|
succeeded=0
|
||
|
attempts=0
|
||
|
max_attempts=5
|
||
|
while [ $succeeded -eq 0 ] && [ $attempts -le $max_attempts ]
|
||
|
do
|
||
|
REVISION=$(($REVISION + 1))
|
||
|
attempts=$(($attempts + 1))
|
||
|
|
||
|
[ "$REVISION" -ge "$MAX_REVISION" ] && exit 1
|
||
|
|
||
|
REVISION_FULL_NAME=$REVISION
|
||
|
|
||
|
if [[ "$IS_IT_GITHUB" = "" ]]
|
||
|
then
|
||
|
REVISION_FULL_NAME=$REVISION_FULL_NAME-mobmet
|
||
|
fi
|
||
|
|
||
|
echo -e "\nTrying to create revision:" $REVISION_FULL_NAME
|
||
|
if git tag $REVISION_FULL_NAME
|
||
|
then
|
||
|
echo -e "\nTrying to push revision to origin:" $REVISION_FULL_NAME
|
||
|
git push origin $REVISION_FULL_NAME
|
||
|
if [ $? -ne 0 ];
|
||
|
then
|
||
|
git tag -d $REVISION_FULL_NAME
|
||
|
else
|
||
|
succeeded=1
|
||
|
fi
|
||
|
fi
|
||
|
done
|
||
|
|
||
|
if [ $succeeded -eq 0 ]; then
|
||
|
echo "Fail to create tag"
|
||
|
exit 1
|
||
|
fi
|
||
|
|
||
|
AUTHOR=$(git config --get user.name)
|
||
|
REVISION=$REVISION_FULL_NAME
|
||
|
export REVISION
|
||
|
export AUTHOR
|
||
|
}
|
||
|
|
||
|
# Генерируем changelog из changelog.in.
|
||
|
# изменяет
|
||
|
# programs/CMakeLists.txt
|
||
|
# dbms/src/CMakeLists.txt
|
||
|
function gen_changelog {
|
||
|
REVISION="$1"
|
||
|
CHDATE="$2"
|
||
|
AUTHOR="$3"
|
||
|
CHLOG="$4"
|
||
|
DAEMONS="$5"
|
||
|
|
||
|
sed \
|
||
|
-e "s/[@]REVISION[@]/$REVISION/g" \
|
||
|
-e "s/[@]DATE[@]/$CHDATE/g" \
|
||
|
-e "s/[@]AUTHOR[@]/$AUTHOR/g" \
|
||
|
-e "s/[@]EMAIL[@]/$(whoami)@yandex-team.ru/g" \
|
||
|
< $CHLOG.in > $CHLOG
|
||
|
}
|
||
|
|
||
|
# Загрузка в репозитории Метрики и БК
|
||
|
# рабочая директория - где лежит сам скрипт
|
||
|
function upload_debs {
|
||
|
REVISION="$1"
|
||
|
DAEMONS="$2"
|
||
|
# Определим репозиторий, в который надо загружать пакеты. Он соответствует версии Ubuntu.
|
||
|
source /etc/lsb-release
|
||
|
|
||
|
if [ "$DISTRIB_CODENAME" == "precise" ]; then
|
||
|
REPO="metrika"
|
||
|
REPO_YABS="bs"
|
||
|
elif [ "$DISTRIB_CODENAME" == "trusty" ]; then
|
||
|
REPO="metrika-trusty"
|
||
|
REPO_YABS="bs-trusty"
|
||
|
else
|
||
|
echo -e "\n\e[0;31mUnknown Ubuntu version $DISTRIB_CODENAME \e[0;0m\n"
|
||
|
fi
|
||
|
|
||
|
# Загрузка в репозиторий Метрики.
|
||
|
|
||
|
cd ../
|
||
|
DUPLOAD_CONF=dupload.conf
|
||
|
cat src/debian/dupload.conf.in | sed -e "s/[@]AUTHOR[@]/$(whoami)/g" > $DUPLOAD_CONF
|
||
|
|
||
|
|
||
|
dupload metrika-yandex_0.0."$REVISION"_amd64.changes -t $REPO -c --nomail
|
||
|
|
||
|
# Загрузка в репозиторий баннерной крутилки (только ClickHouse).
|
||
|
if [[ -z "$(echo $DAEMONS | tr ' ' '\n' | grep -v clickhouse)" ]];
|
||
|
then
|
||
|
echo -e "\n\e[0;32mUploading daemons "$DAEMONS" to Banner System \e[0;0m\n "
|
||
|
dupload metrika-yandex_0.0."$REVISION"_amd64.changes -t $REPO_YABS -c --nomail
|
||
|
else
|
||
|
echo -e "\n\e[0;31mWill not upload daemons to Banner System \e[0;0m\n "
|
||
|
fi
|
||
|
}
|