如何将 Jenkins 秘密文件传递给 Groovy 脚本?

时间:2021-06-25 19:37:41

标签: jenkins jenkins-pipeline jenkins-plugins jenkins-groovy jenkins-job-dsl

我有一个基本上包含一些元数据的秘密文件。我使用“withCredentials”块将该文件读入局部变量:

stage('fetch')
   {
   steps{
       withCredentials([file(credentialsId: 'secret.json', variable: 'metadata')]) {
           script{
     def rootDir = pwd()
    def exampleModule = load "${rootDir}/test.groovy"
    def res=exampleModule.process(${metadata})
    sh 'echo $res'
           }
     }
    }
   }
       

但是元数据以屏蔽形式出现在 exampleModule 的 getData 中。我怎样才能通过它是未屏蔽的形式?

1 个答案:

答案 0 :(得分:0)

您可以解密并打印出秘密值

println hudson.util.Secret.decrypt("<Your masked data>")

如果您使用的是 secretbytes,您需要这样做:

println(new String(com.cloudbees.plugins.credentials.SecretBytes.fromString("{<Your secretbytesmask>}").getPlainData(), "ASCII"))

要知道秘密字节,您应该打开 JenkinsHome 目录中的 credentials.xml 文件并复制秘密字节,如下所示:

enter image description here
注意:如果从 jenkins 管道运行,您需要批准脚本,因为您将在控制台中收到以下消息:

enter image description here

您需要点击并批准此脚本,一旦批准,您将能够看到未屏蔽的内容。