我在Jenkins上运行了一个CD管道,其中包含一些使用base64和gpg2的解密代码。
我设置了管道,以便脚本使用Jenkins shell命令从git获取和解密正确的密码,如下所示:
def plainText = sh(script: """#!/bin/sh -e
echo "$encrypted" |
base64 -d -w 0 |
gpg2 --batch --decrypt --passphrase $pw """,
returnStdout: true
)
println("$key=$plaintext")这个管道工作得很好,现在我正在为我们的开发工作站编写一个脚本,使用maven-groovy-plugin在本地进行同样的解密,以便devs能够在工作站上运行服务器。
我的第二个要求是我可以在Jenkins上运行我的maven groovy插件来设置集成测试。
因此,我正在寻找一个可以在本地和构建服务器上使用的解决方案。如果有必要,我可以让脚本打开操作系统并执行如下内容:
def cmd = [ 'sh', '-c',
"""echo "$encrypted" |
base64 -d -w 0 |
gpg2 --batch --decrypt --passphrase $encryptionKey """]
cmd.execute().with {
def output = new StringWriter()
def error = new StringWriter()
//wait for process ended and catch stderr and stdout.
it.waitForProcessOutput(output, error)
println "error=$error"
println "output=$output"
println "code=${it.exitValue()}"
}但我不知道如何调整cmd以使用cygwin执行。
发布于 2018-10-31 12:19:11
我通过内置的JMX打开了操作系统,使用了cygwin或linux:
import java.lang.management.*
def os = ManagementFactory.operatingSystemMXBean
println """OPERATING SYSTEM:
\tarchitecture = $os.arch
\tname = $os.name
\tversion = $os.version
\tprocessors = $os.availableProcessors"""
def bash = os.name.contains("Win") ? "c:\\cygwin64\\bin\\bash" : "bash"
def cmd = [ bash, '-c',
"""echo "$encrypted" |
/usr/bin/base64 -d -w 0 |
/usr/bin/gpg2 --batch --decrypt --passphrase $encryptionKey """]
cmd.execute()...https://stackoverflow.com/questions/52970348
复制相似问题