Ночная сборка используется для того что бы каждый день быть уверенным в том, что без ошибок компилируется код, который лежит в основной ветке (trunk’е) системы контроля версий. Для этого на сервере, который работает 24 часа в сутки, ночью запускается компиляция проекта, и результат компиляции рассылается участникам проекта.
Простой способ завести ночную сборку — написать скрипт компилирующий проект и добавить выполнение этого скрипта в crontab.
Пример bash скрипта:
#! /bin/sh PROJ=proj_name #имя проекта SVN_PATH="svn://${PROJ}/trunk/" #путь в репозитории BUILD_DIR="$HOME/tmp/${PROJ}_nb" #директория для сборки MAIL_BODY="$HOME/tmp/${PROJ}_mail" #файл для формирования тела письма LOG_FILE="$HOME/tmp/${PROJ}_log" #лог-файл #список рассылки MAIL_LIST="developer@mail.ru manager@mail.ru tester@mail.ru" #подготовка сборки prepare() { rm -rf $BUILD_DIR 1>&2 echo -n "*** Creating temp directory..." install -m 755 $BUILD_DIR 1>&2 echo "" > $MAIL_BODY echo "" > $LOG_FILE } #получение исходников из системы контроля версий svn_co() { echo -n "*** Checking out sources from "$SVN_PATH" to $BUILD_DIR..." svn -q co $SVN_PATH $BUILD_DIR 1>&2 } #компиляция build() { echo -n "*** Make all ..." make all -C $BUILD_DIR 1>&2 } #в тело письма добавляем имя проекта и дату сборки echo -n ${PROG} > $MAIL_BODY date -R >> $MAIL_BODY echo "" >> $MAIL_BODY #этапы сборки BUILD_STAGES="prepare svn_co build" #выполнем все этапы сборки successful=1 for i in $BUILD_STAGES; do $i 1>> $MAIL_BODY 2>$LOG_FILE; if [ $? != 0 ]; then echo "ERROR" >> $MAIL_BODY tail $LOG_FILE >> $MAIL_BODY successful=0 else echo "OK" >> $MAIL_BODY fi done #формируем тему письма if [ "x$successful" = "x1" ] ; then MAIL_SUBJECT="${PROJ} build OK"; else MAIL_SUBJECT="${PROJ} build FAILED"; fi #отправляем письмо cat $MAIL_BODY | mutt $MAIL_LIST -s "$MAIL_SUBJECT" |