使用当前日期创建工件目录

Create artifactory directory with current date

如何在 jenkins 中创建具有当前日期的工件目录。即目标路径应该有一个以当前日期作为目录名称的目录。


rtUpload (
    serverId: 'Artifactory-1',
    spec: '''{
          "files": [
            {
              "pattern": "bazinga/*froggy*.zip",
              "target": "bazinga-repo/froggy-files/<CurrentDate>"
            }
         ]
    }''',

每次触发管道时,目标路径都应具有该特定日期的目录名称。例如,如果管道在 2022-03-29 上运行,则:

"target": "bazinga-repo/froggy-files/220329/"

你可以这样做

定义这个环境部分

environment {
  
  CURRENT_DATE = new java.text.SimpleDateFormat('yyMMdd').format(new Date())

}


rtUpload (
    serverId: 'Artifactory-1',
    spec: '''{
          "files": [
            {
              "pattern": "bazinga/*froggy*.zip",
              "target": "bazinga-repo/froggy-files/$CURRENT_DATE"
            }
         ]
    }''',

这是另一个选项:

def current_date = new java.text.SimpleDateFormat('yyMMdd').format(new Date())
pipeline {
// do stuff, generate files...

rtUpload (
    serverId: 'Artifactory-1',
    spec: """{
          "files": [
            {
              "pattern": "bazinga/*froggy*.zip",
              "target": "bazinga-repo/froggy-files/${current_date}"
            }
         ]
    }"""
// more stuff
} // end pipeline

这利用了 groovy 字符串插值和主 pipeline 块外部的脚本管道变量。

当 运行 时,变量 current_date 将被分配,然后当它到达 rtUpload 调用时,将评估 spec 参数,因为它正在使用 triple-double-quote 符号 ${current_date} 部分将被 groovy 变量的值替换, 在它被传递给函数之前 .

这不依赖于 rtUpload 函数生成 shell 和评估 shell 环境,以便为规范定义提供日期值。

Groovy 个字符串 https://groovy-lang.org/syntax.html#all-strings