Jenkins 如何复制詹金斯的秘密文件

Jenkins 如何复制詹金斯的秘密文件,jenkins,groovy,Jenkins,Groovy,我已经在Jenkins凭证中添加了两个名为PRIVATE-KEY和PUBLIC-KEY的秘密文件。 如何将这两个文件复制到作业中的/src/resources目录 我有以下代码片段 withCredentials([file(credentialsId: 'PRIVATE_KEY', variable: 'my-private-key'), file(credentialsId: 'PUBLIC_KEY', variable: 'my-public-key')]

我已经在Jenkins凭证中添加了两个名为
PRIVATE-KEY
PUBLIC-KEY
的秘密文件。 如何将这两个文件复制到作业中的
/src/resources
目录

我有以下代码片段

withCredentials([file(credentialsId: 'PRIVATE_KEY', variable: 'my-private-key'),
                 file(credentialsId: 'PUBLIC_KEY', variable: 'my-public-key')]) {
   //how to copy, where are those files to copy from?
}

好的,我想我做到了
my private key
变量是指向该秘密的路径,因此我必须将该秘密复制到所需的目标

withCredentials([file(credentialsId: 'PRIVATE_KEY', variable: 'my-private-key'),
                 file(credentialsId: 'PUBLIC_KEY', variable: 'my-public-key')]) {
   sh "cp \$my-public-key /src/main/resources/my-public-key.der"
   sh "cp \$my-private-key /src/main/resources/my-private-key.der"
}
在@answer之后,
powershell
的等价物是:

withCredentials([file(credentialsId: 'PRIVATE_KEY', variable: 'my-private-key')]) {
  bat "powershell Copy-Item $appSettings -Destination src\\main\\resources "
}

这两种解决方案都适用于特定的
OS
(win,unix)。有一些基本的功能需要检查是系统unix
isUnix()
。相反,您可以对任何机器使用读/写基本方法

withCredentials([file(credentialsId: PRIVATE_KEY, variable: 'my_private_key'),
                 file(credentialsId: PUBLIC_KEY, variable: 'my_public_key')]) {
        writeFile file: 'key/private.pem', text: readFile(my_private_key)
        writeFile file: 'key/public.pem', text: readFile(my_public_key)
    }

谢谢你带着一个解决方案回来,这对我很有帮助。谢谢humberd,是的,我认为能够转储到你喜欢的文件名将是一个很好的增强。提供了该选项。请注意,您的方法在凭据块关闭后将复制的文件保留在生成节点上。任何后续步骤仍然可以访问文件内容。请记住,withCredential块是特权访问块。这是一个干净的解决方案,但在尝试使用XML文件时,我得到了一个不需要的字符。