将时间戳添加到 Node 项目生成的战争文件到 Jenkins 管道中的工件工厂



我有一个从我的 Jenkins 管道生成的war文件。我想把它发布到Artifactory。我想在 Artifactory 上生成的war文件中添加时间戳。有没有办法更改JenkinsFile以反映时间戳?

def server = Artifactory.newServer url: "https://artifacts.com/artifactory"
buildInfo = Artifactory.newBuildInfo()
uploadSpec = """{
"files": [
{
"pattern": "./build/*.war",
"target": "<path-to-target>"
}
} """
// Upload to Artifactory.
server.upload spec: uploadSpec, buildInfo: buildInfo
// Publish build info.
server.publishBuildInfo buildInfo

JenkinsFile需要哪些更改才能包含工件工厂的时间戳?

两种解决方案,

  1. 在上传文件之前重命名文件。

    • 如果您只有一个文件并且知道其名称:
sh 'mv toto.war `date +"%d-%m-%Y-%H.%M"`toto.war'
  • 如果你有几个你不知道名字的文件
sh '''#!/bin/bash
for i in *.war; do mv "$i" ${i::-4}`date +"--%d-%m-%Y-%H.%M"`.war; done
'''

在这里,我们使用 bash 遍历所有 .war 文件并移动它们以重命名它们。${i::-4}删除扩展名。您可以通过查看日期的手册页来修改日期格式。

  1. 使用 groovy 并让目标属性成为重命名的属性
@Field def timeStamp = Calendar.getInstance().getTime().format('YYYYMMdd-hhmmss',TimeZone.getTimeZone('CST'))
uploadSpec = """{
"files": [
{
"pattern": "./build/*.war",
"target": "<path-to-target>.${timeStamp}.war"
}
} """

原始帖子来自: 如何在 Jenkins 中为工件添加时间戳

正如你提到的,你将不得不将Calendar.getInstance方法,getTime和getTimeZone列入白名单

最新更新