제 젠킨스 설정에서 RPM 버전 번호 매기기와 관련하여 빌드 번호를 무시하기로했습니다. 대신 생성되는 다양한 릴리스를 생성하고 추적하는 자체 제작 스크립트를 사용합니다. 내 스펙 파일에서
:
# 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 형식의 파일 기반 데이터베이스 (유지하는 간단한 스크립트입니다
Version: %{_iv_pkg_version}
Release: %{_iv_pkg_release}%{?dist}
그리고 젠킨스 구축 스크립트
). 동시에 실행되는 것을 처리 할 수 있으므로 걱정할 필요는 없지만 슬레이브를 빌드하면 작동하지 않습니다 (가능한 한 테스트 할 수 없으므로 사용할 수 없습니다). 소스 코드 및 문서
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
추신 : 젠킨스는 스크립트가 단지 예는 rpmbuild 디렉토리 구조를 만들고하려면 .src를 검색 뒤에 논리입니다 구축합니다
결과
나는 다음과 같은 패키지 버전 관리 체계를 얻을 수 있다는 것입니다. rpm과 .spec 파일 이름은 좀 더 복잡합니다.
sed -i "s/VERSION/$ BUILD_NUMBER /"rpm.spec –
당신은 소스 제어하에 있어야하므로 빌드가 그것을 변경해서는 안됩니다. – thekbb
[fpm] (https://github.com/jordansissel/fpm)을 시도해보세요. 80 %의 사양 파일보다 훨씬 낫습니다! – quickshiftin