需要编写非詹金斯等效的密码解密脚本以进行工作站构建

时间:2018-07-24 16:55:04

标签: maven jenkins groovy bouncycastle gnupg

在我的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,但我希望现在有一种更清洁的方法。

0 个答案:

没有答案