在RPM规范文件中使用詹金斯集结号(Using Jenkins BUILD NUMBER in RP

2019-08-31 20:01发布

Name:                   My Software
Version:                1.0.5
Release:                1
Summary:                This is my software

不知道是否有人之前或者如果它很容易,但尝试这样做:

SPEC文件有其版本两种独特的指标:

  • 版本(指定软件版本)
  • 版本(指定包的数量 - 如果你建立一个RPM,它的分解,并建立一个又一个,您的“释放”号。

我想知道是否有人试过了,还是知道如何,我可以使用詹金斯$ BUILD_NUMBER变量来动态改变Release数量,从而增加Release的每一个新的成功构建完成时间数...?

Answer 1:

这是一个很长一段时间...,幸好我没有基于RPM的系统,所以我不能对此进行测试。

你可以传递参数rpmbuild在命令行

rpmbuild --define="version ${env.BUILD_NUMBER}"

这将是有益的张贴规范,您使用的是创建RPM的脚本片段。 你不希望你的构建脚本编辑规范文件,我假设它是从一些源代码控制拉出了下来。



Answer 2:

我一直在使用詹金斯版本号为通过“发布”和包装FPM 。

夫妇FPM与詹金斯提供的一些全局

# $BUILD_ID - The current build id, such as "2005-08-22_23-59-59" (YYYY-MM-DD_hh-mm-ss)
# $BUILD_NUMBER - The current build number, such as "153"
# $BUILD_TAG - String of jenkins-${JOB_NAME}-${BUILD_NUMBER}. Convenient to put into a resource file, a jar file, etc for easier identification.

有一个在下面的例子中命令的一些含糊不清的变量,但$BUILD_NUMBER是我使用的是什么释放此处(FPM称之为迭代代替)。

fpm_out=$(fpm -a all -n $real_pkg_name -v $version -t rpm -s dir --iteration $BUILD_NUMBER ./*)


Answer 3:

在我的詹金斯的设置,我已经决定与问候到RPM版本编号完全绕过版本号。 相反,我用一个自制的脚本生成,并跟踪正在生成的各种版本的。

在我的spec文件:

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格式,便于维护)。 它可以处理在同一时间中运行,所以不用担心在那里,但如果你有建奴(据我所知,我不使用他们,所以无法测试)将无法正常工作。 你可以找到源代码和文档在这里 。

其结果是,我碰到下面的包的版本控制方案:

# 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文件名的逻辑是有点复杂。



文章来源: Using Jenkins BUILD NUMBER in RPM spec file