我有一个从我的 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
需要哪些更改才能包含工件工厂的时间戳?
两种解决方案,
-
在上传文件之前重命名文件。
- 如果您只有一个文件并且知道其名称:
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}
删除扩展名。您可以通过查看日期的手册页来修改日期格式。
- 使用 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列入白名单
。