如何使用凭据参数秘密文件类型将 keystore.jks 文件复制到 jenkins 工作区?
How to copy keystore.jks file to jenkins workspace using credentials parameter secret file type?
我的应用程序使用 jks 类型的密钥库文件。我必须使用 jenkins 凭据参数的秘密文件来保护它。使用以下代码将文件写入 jenkins 工作区。
withCredentials([file(credentialsId: 'KEYSTORE_FILE', variable: 'keystore_file')]) {
writeFile file: 'keystore/keystore.jks', text: readFile(keystore_file)
}
但是密钥库被上面的方法损坏了。抛出无效的密钥库格式错误
原因:java.io.IOException:密钥库格式无效
在 java.base/sun.security.provider.JavaKeyStore.engineLoad(JavaKeyStore.java:659)
在 java.base/sun.security.util.KeyStoreDelegator.engineLoad(KeyStoreDelegator.java:222)
在 java.base/java.security.KeyStore.load(KeyStore.java:1479)
在 org.springframework.security.saml.key.JKSKeyManager.initialize(JKSKeyManager.java:117)
请帮助我将密钥库文件写入 jenkins 工作区而不破坏它。
您必须通过cp 命令复制文件。使用 writeFile/readFile 会丢失格式。
sh "mkdir -p keystore/"
withCredentials([file(credentialsId: 'KEYSTORE_FILE', variable: 'keystore_file')]) {
sh "cp -f \"${keystore_file}\" \"keystore/keystore.jks\""
}
请注意,我们需要使用 mkdir 命令在路径之前创建,并且在 cp 命令中我们将引号转义以避免出现“cp: target '...' is not a directory”错误。
我的应用程序使用 jks 类型的密钥库文件。我必须使用 jenkins 凭据参数的秘密文件来保护它。使用以下代码将文件写入 jenkins 工作区。
withCredentials([file(credentialsId: 'KEYSTORE_FILE', variable: 'keystore_file')]) {
writeFile file: 'keystore/keystore.jks', text: readFile(keystore_file)
}
但是密钥库被上面的方法损坏了。抛出无效的密钥库格式错误
原因:java.io.IOException:密钥库格式无效 在 java.base/sun.security.provider.JavaKeyStore.engineLoad(JavaKeyStore.java:659) 在 java.base/sun.security.util.KeyStoreDelegator.engineLoad(KeyStoreDelegator.java:222) 在 java.base/java.security.KeyStore.load(KeyStore.java:1479) 在 org.springframework.security.saml.key.JKSKeyManager.initialize(JKSKeyManager.java:117)
请帮助我将密钥库文件写入 jenkins 工作区而不破坏它。
您必须通过cp 命令复制文件。使用 writeFile/readFile 会丢失格式。
sh "mkdir -p keystore/"
withCredentials([file(credentialsId: 'KEYSTORE_FILE', variable: 'keystore_file')]) {
sh "cp -f \"${keystore_file}\" \"keystore/keystore.jks\""
}
请注意,我们需要使用 mkdir 命令在路径之前创建,并且在 cp 命令中我们将引号转义以避免出现“cp: target '...' is not a directory”错误。