在某些场景下,我们需要从另一个pipeline中拷贝制品,Copy Artifact插件 可以帮助我们实现
steps {
copyArtifacts(
projectName:
"core",
selector: lastSuccessful(true)
)
}
从core项目中拿到最后一次构建成功的制品 参数:
除projectname参数是必填的外,其他参数都是可选的。
常用的获取选择器的方法
谈到制品,就必须谈到版本号的管理。版本号的制定并没有所谓的行业标准。比如谷歌浏览器当前版本号为70.0.3538.110 ; Ubuntu操作系统当前版本号为18.10;由美国计算机教授高德纳(DonaldErvin Knuth )编写的功能强大的排版软件TEX系统的版本号不断趋近于T,类似于这样:3.1415926。
GitHub提出了一种具有指导意义、统一的版本号表示规则,称为Semantic Versioning (语义化版本表示)。这也被人们称为三段式版本号。有了这套规则,用户一看版本号,就大概能猜到一个软件两个版本之间的可能变化。
语义化版本格式为:主版本号.次版本号.修订号。版本号递增规则如下:
先行版本号及版本编译元数据可以加到“主版本号.次版本号.修订号”的后面,作为延伸。以下是常用的修饰词。
语义化版本号的好处是除了方便人类识别,也方便软件识别。比如Ansible提供的版本比较器的使用:{{ansible distribution version isversion ( ‘12.04’,’>=’)}。这也是很多开源软件使用语义化版本号的原因。
但是,语义化版本号真的适用于所有的场景吗?不一定。我们需要根据版本号的作用来确定软件版本号的格式。说白了,你希望别人一眼从版本号里看出什么,你就怎么确定版本号。
那么,谁看这个版本号?软件的真正使用者根本不关心软件版本号。不过,现实中各种App强制大版本,对于市场营销的确有好处。企业软件的销售人员是要看版本号的。他必须知道不同版本之间的功能区别,以更好地完成其工作。
移动端App的产品经理是要看版本号的。他必须知道当前最新版本与上一个版本的区别,以及市面上都运行了哪些版本。当用户提交Bug时,产品经理可以根据用户所装的版本进行决策。
程序员是要看版本号的。版本号意味着软件运行时的源码版本。有了这个对应关系,对于查Bug、了解线上业务逻辑的运行都是非常有用的。
对于版本号的不同诉求,决定了它的作用。笔者总结,可以从以 下两个角度来设计版本号。 1.方便表达。对于更接近使用者的软件,更倾向于这个角度,比如三段式版本号。所以,推荐前端应用使用三段式版本号。 2.方便找出制品与源码的关系。对于更接近软件源码的人,更倾向于这个角度,比如Go CD的版本号:18.10.0( 7703-42d1cbe661161b5400289ead86c0447c84af8cOa )。除了三段式版本号,还会有构建次数及相应的代码提交ID。推荐后端服务使用Go CD的这种版本号格式。
现实中,如何设计版本号才能做到既方便表达,又方便找出制品与源码的关系呢?采用内外部版本号策略就可以了。对外部,可以使用1.0.1这样的版本号;对内部,可以使用1.0.1.20180911.12.42d1cbe66116这样的版本号。最后要做的事情就是,想办法将内外部版本对应上就可以了。
Version Number ( https”//plugins.jenkins.io/versionnumber )是一款用于生成版本号的插件,它提供了VersionNumber步骤。
具体使用方法如下:
script {
def version = VersionNumber versionPrefix: "${JOB_NANE}-", versionNumberString: 'v1.1.1.${BUILDS_ALL_TIME}'
echo "${version}"
}
注意:BUILDS ALL TIME只是占位符,并不是Jenkins或VersionNumber插件提供的环境变量。
VersionNumber步骤支持以下参数。
versionNumberString参数使用占位符生成版本号。部分占位符本身支持参数化。接下来分别介绍它们
比如构建的时间为2018-12-02,那么BUILD_DAY的值为2,BUILD_WEEK的值为49,BUILD_MONTH的值为12,BUILD_YEAR的值为2018。
接下来是一组和构建数相关的占位符:BUILDS TODAY、BUILDS THIS WEEK、 BUILDS THIS MONTH、BUILDS THISYEAR,它们分别表示当天、本星期、本月、本年完成的构建数。BUILDS ALL TIME表示自从项目开始后完成的总构建数。
MONTHS SINCE PROJECT START和YEARS SINCE PROJECT START分别表示自项目开始日期起已过去的日历月数和年数。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。