Nella mia configurazione Jenkins, ho deciso di ignorare il numero di build per quanto riguarda la numerazione delle versioni RPM completamente. Invece, io uso uno script fatto in casa che genera e tiene traccia dei vari rilasci che vengono generati.
Nel mio file spec:
Version: %{_iv_pkg_version}
Release: %{_iv_pkg_release}%{?dist}
E nello script Jenkins costruire:
# 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
è un semplice script che mantiene un database basato su file (in formato JSON, per una facile manutenzione). Può gestire l'esecuzione nello stesso momento, quindi non ci si preoccupa, ma non funzionerà se si dispone di build slave (per quanto posso dire, non li uso quindi non posso testare). È possibile trovare il codice sorgente e la documentazione here.
Il risultato è che ottengo il seguente schema pacchetto di controllo delle versioni:
# 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: Si noti che la Jenkins costruire script è solo un esempio, la logica che sta dietro la creazione della struttura di directory rpmbuild e recuperare il .src. i nomi di file rpm e .spec sono un po 'più complicati.
sed -i "s/VERSION/$ BUILD_NUMBER /" rpm.spec –
non si vuole copiare il file .spec ... deve (dovrebbe) essere sotto il controllo del codice sorgente, quindi la compilazione non dovrebbe cambiarlo. – thekbb
prova [fpm] (https://github.com/jordansissel/fpm), molto meglio dei file spec l'80% delle volte! – quickshiftin