如何在 jenkins 声明管道中正确使用 artifactory rtDownload 的目标

How to properly use target of artifactory rtDownload in jenkins declarative pipeline

这个剪了

   stage('get iter number') {
      steps {
        rtDownload (  // 
           serverId: 'MAIN-ARTIFACTORY',
           spec: '''{ "files": [{"pattern": "p1/p2/p3/${BUILD_ID}/n_iter.txt", "target": "./n_iter.txt"}] }''',
        )
      }
   }

其中 BUILD_ID = 'a/b' 将文件下载到 $WORKSPACE/p2/p3/a/b/n_iter.txt 而不是预期的 $WORKSPACE/n_iter.txt

另外,很奇怪 - 为什么 p1 不在下载路径中?

请尝试使用以下代码片段,这意味着 com/my-files/ Artifactory repository-path 中的所有文件都将下载到 my-folder Jenkins 代理文件系统上的目录。有关这方面的更多详细信息,请参阅我们的声明式管道语法维基页面 here

rtDownload (
serverId: 'Artifactory-1',
spec: '''{
      "files": [
        {
          "pattern": "com/my-files/",
          "target": "my-folder/"
        }
      ]

除上述内容外,您还可以参考我们GitHub页面here中提到的rtDownload示例。

默认情况下,工件会下载到文件系统中的目标路径,同时在源存储库中维护它们的层次结构(不包括存储库名称 - 因此您的示例中缺少 p1)。

要在忽略层次结构的情况下下载工件,请在文件规范中设置 "flat": "true"

要对生成的层次结构进行更高级的控制,您可能需要使用 Placeholders

File Specs documentation 中查看更多信息。