Gear/cronbuild: различия между версиями

Материал из ALT Linux Wiki
Нет описания правки
Строка 65: Строка 65:
{{path|.gear/cronbuild-add-changelog}}.
{{path|.gear/cronbuild-add-changelog}}.


==== Полный список служебных файлов cronbuild в {{path|.gear/}} ====
 
=== утилиты для локальной сборки (пакет {{pkg|gear-cronbuild}}) ===
 
<source lang="bash">
#!/bin/sh -ve
gear-cronbuild-apply-hooks
gear "$@"
gear-commit
</source>
 
 
== Приложения. ==
=== Полный список служебных файлов cronbuild в {{path|.gear/}} ===
{| class="standard"
{| class="standard"
!файл
!файл
Строка 87: Строка 99:
Скрипты получают спек-файл как первый аргумент.
Скрипты получают спек-файл как первый аргумент.


==== cronbuild-options ====
=== cronbuild-options ===
{| class="standard"
{| class="standard"
!переменная
!переменная
Строка 107: Строка 119:
|
|
|}
|}
=== утилиты для локальной сборки (пакет {{pkg|gear-cronbuild}}) ===


=== Пример использования .gear/cronbuild-* ===
=== Пример использования .gear/cronbuild-* ===

Версия от 11:57, 3 июля 2010

Stub.png
Данная страница находится в разработке.
Эта страница ещё не закончена. Информация, представленная здесь, может оказаться неполной или неверной.


Введение в cronbuild.

Некоторые пакеты по своей природе нуждаются в постоянном обновлении, при этом при обновлении у этих пакетов спек практически не меняется. К таким пакетам относятся различные базы - антивирусные, оборудования (foomatic-db, PCI IDs, мониторов, ...), cliparts, и т. д. Как правило, в версии/релизе таких пакетов присутствует timestamp. Система cronbuild предназначена для автоматизации сборки таких пакетов. Теперь майнтайнеру достаточно один раз настроить для пакета cronbuild и пакет будет автоматически собираться в Сизиф с заданной майнтайнером периодичностью, например, раз в неделю, до тех пор, пока сборка не сломается.

При этом пакеты собираются только тогда, когда это действительно нужно: если после обновления файлы исходников не изменились (согласно git diff <commit before update>), то сборка пакета будет пропущена, так как в ней нет необходимости.

Настройка cronbuild.

cronbuild состоит из 3-х частей:

  • локальные скрипты cronbuild для автоматизации обновления .git репозитрия.
  • утилиты для локальной сборки (пакет gear-cronbuild)
  • сервер удаленной сборки (cronbuild repocop.altlinux.org)

локальные скрипты cronbuild для автоматизации обновления .git репозитрия

Сердцем cronbuild является скрипт .gear/cronbuild-update-source. Этот скрипт пишется индивидуально для каждого пакета. Его задача -- обновить исходные тексты пакета, используя git-fetch, git-svn или просто wget.

пример скрипта для обновления через wget

Этот скрипт работает в случае, когда исходники публикуются в виде тарбола, а в git репозитарии хранятся в распакованном виде в поддиректории $PKGNAME.

#!/bin/sh -ve
PKGNAME=<...>
rm -f $PKGNAME-SNAPSHOT.tar.gz
wget -c http://www.pkgname.org/download/pkgname/pkgname-SNAPSHOT.tar.gz
tar xzf $PKGNAME-SNAPSHOT.tar.gz
rm -f $PKGNAME-SNAPSHOT.tar.gz
git rm -r -f $PKGNAME
rm -rf $PKGNAME
mv $PKGNAME-SNAMPSHOT $PKGNAME
git add $PKGNAME

замечания к скрипту

  • скрипт должен сообщать о всех проблемах при обновлении. Проще всего использовать #!/bin/sh -ve,

иначе придется у каждой команды проверять код завершения.

  • изменения должны быть добавлены в индекс git.
  • не нужно коммитить изменения: git-cronbuild это сделает автоматически после успешной сборки.

Изменение версии/релиза пакета

Утилита gear-cronbuild-update-spec-timestamp автоматически ищет и обновляет timestamp вида ГГГГММДД в тегах Serial, Epoch, Version, Release, либо в декларациях %define <macrosname> <timestamp>. Если пакет использует другую систему нумерации, необходимо создать свой скрипт изменения версии/релиза пакета .gear/cronbuild-update-version. Также можно переопределить стандартный changelog скриптом .gear/cronbuild-add-changelog.


утилиты для локальной сборки (пакет gear-cronbuild)

#!/bin/sh -ve
gear-cronbuild-apply-hooks
gear "$@"
gear-commit


Приложения.

Полный список служебных файлов cronbuild в .gear/

файл Описание
cronbuild-update-source Основной скрипт для обновления содержимого пакета.
cronbuild-update-version Скрипт для обновления версии и/ли релиза пакета. Не обязателен.
cronbuild-add-changelog Скрипт для кастомизации changelog. Не обязателен.
cronbuild-options Конфигурационный файл. Не обязателен.

Скрипты должны быть помечены как исполняемые. К файлам конфигурации это не относится.

Скрипты получают спек-файл как первый аргумент.

cronbuild-options

переменная Описание
cronbuild_interval
cronbuild_mailto
cronbuild_cc
cronbuild_mastergit
cronbuild_masterbranch

Пример использования .gear/cronbuild-*