将时间戳添加到Jenkins管道中从节点项目到artifactory生成的war文件中
我有一个从Jenkins管道生成的将时间戳添加到Jenkins管道中从节点项目到artifactory生成的war文件中,jenkins,jenkins-pipeline,artifactory,jenkins-groovy,Jenkins,Jenkins Pipeline,Artifactory,Jenkins Groovy,我有一个从Jenkins管道生成的war文件。我想把它发布到Artifactory。我想向生成到Artifactory上的war文件添加一个时间戳。是否有办法更改JenkinsFile以反映时间戳 def server = Artifactory.newServer url: "https://artifacts.com/artifactory" buildInfo = Artifactory.newBuildInfo() uploadSpec = """{ "files": [
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
def server=Artifactory.newServer url:https://artifacts.com/artifactory"
buildInfo=Artifactory.newBuildInfo()
uploadSpec=“”{
“文件”:[
{
“模式”:“/build/*.war”,
“目标”:”
}
} """
//上传到Artifactory。
server.upload spec:uploadSpec,buildInfo:buildInfo
//发布构建信息。
server.publishBuildInfo buildInfo
在JenkinsFile
中需要做哪些更改才能将时间戳包含到工件中?两种解决方案
- 如果您只有一个文件,并且知道其名称:
- 如果你有几个文件,你不知道它们的名字
${i::-4}
删除扩展名。您可以通过查看date的手册页来修改日期格式
@Field def timeStamp=Calendar.getInstance().getTime().format('YYYYMMdd-hhmmss',TimeZone.getTimeZone('CST'))
uploadSpec=“”{
“文件”:[
{
“模式”:“/build/*.war”,
“目标”:“${timeStamp}.war”
}
} """
原文来自:
正如您所提到的,您必须将Calendar.getInstance方法、getTime和getTimeZone也列为白名单此时间戳将反映在工件元数据或工件名称中。您还可以查看工件的“build.timestamp”属性。此解决方案需要启用,这是不可能的,因为我不希望我更新了我的答案。在jenkins作业中,命令行确实是比Groovy更好的解决方案。Groovy在master jenkins上执行,sh命令在Slave上执行,但我个人喜欢Groovy的解决方案。我很好奇你所说的安全漏洞。如何列出日历方法是否存在安全漏洞?
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
'''
@Field def timeStamp = Calendar.getInstance().getTime().format('YYYYMMdd-hhmmss',TimeZone.getTimeZone('CST'))
uploadSpec = """{
"files": [
{
"pattern": "./build/*.war",
"target": "<path-to-target>.${timeStamp}.war"
}
} """