В моей установке Jenkins я решил обойти номер сборки в отношении нумерации версий RPM полностью. Вместо этого я использую самодельный скрипт, который генерирует и отслеживает различные выпуски, которые генерируются.
В моем файле спецификации:
Version: %{_iv_pkg_version}
Release: %{_iv_pkg_release}%{?dist}
И в сценарии Дженкинс сборки:
# Just initialising some variables, and retrieving the release number.
package="$JOB_NAME"
# We use setuptools, so we can query the package version like so.
# Use other means to suit your needs.
pkg_version="$(python setup.py --version)"
pkg_release="$(rpm-release-number.py "$package" "$pkg_version")"
# Creating the src.rpm (ignore the spec file variables)
rpmbuild --define "_iv_pkg_version $pkg_version" \
--define "_iv_pkg_release $pkg_release" \
-bs "path/to/my/file.spec"
# Use mock to build the package in a clean chroot
mock -r epel-6-x86_64 --define "_iv_pkg_version $pkg_version" \
--define "_iv_pkg_release $pkg_release" \
"path/to/my/file.src.rpm"
rpm-release-number.py
является простой скрипт, который поддерживает базу данных на основе файлов (в формате JSON, для легкого обслуживания). Он может работать одновременно с запуском, поэтому не стоит беспокоиться, но это не сработает, если у вас есть ведомые устройства (насколько я могу судить, я их не использую, поэтому не могу проверить). Вы можете найти исходный код и документацию here.
В результате я получаю следующую схему пакета управления версиями:
# Build the same version 3 times
foo-1.1-1
foo-1.1-2
foo-1.1-3
# Increment the version number, and build twice
foo-1.2-1
foo-1.2-2
PS: Обратите внимание, что Дженкинс построить сценарий просто пример, логика создания структуры каталогов rpmbuild и извлечения .src. rpm и .spec имена файлов немного сложнее.
sed -i "s/VERSION/$ BUILD_NUMBER /" rpm.spec –
Вы не хотите, чтобы файл sed.spec ... он (должен) находился под контролем источника, поэтому сборка не должна его изменять. – thekbb
попробуйте [fpm] (https://github.com/jordansissel/fpm), намного лучше, чем файлы спецификаций в 80% случаев! – quickshiftin