在我的Jenkins管道中,我正在使用Jenkins服务器的gpg2可执行文件来解密我们的Openshift / Kubernetes部署的密码。我想以某种方式在工作站上复制它。
我们的平台运营团队提供的Jenkins groovy脚本最初处理的是gpg加密文件,但作为开发人员,我们发现整个开发过程确实容易出错,并对该脚本进行了修改,使其能够从字符串变量而不是文件中解密密码。
这是我在Jenkins上所做的事情,密码短语$pw
来自Jenkins凭证:
readProperties(file: fileIn).each {
key, value -> B: {
def plainText = ''
if (value) {
echo "encrypted $key is [$value]"
plainText = sh(
script: """echo "$value" |
base64 -d -w 0 |
gpg2 --batch --decrypt --passphrase $pw |
base64 -w 0 """,
returnStdout: true
)
}
sh "echo ' $key: $plainText' >> $fileOut"
}
}
棘手的是替换sh
命令。
我看过bouncycastle
,但是无法找到一种方法来仅输入加密的字符串而不是整个文件。我可以将这些值写入文件并进行处理,但是我宁愿嚼一口圣甲虫披头士乐队。
我想到可能有一种比gpg
解密字符串更简单的方法,但是我还没有找到一种-主要要求是可以在Jenkins上实现。
我看着How to encrypt a string/stream with bouncycastle pgp without starting with a file,但我希望现在有一种更清洁的方法。