使用Job DSL上的文件功能

时间:2016-11-25 13:29:24

标签: gradle groovy jenkins-job-dsl

我正在使用Job DSL,我想下载一个文件,读取它,并设置一些env变量。

def static setSecrets(Job delegate, Map overrides = [:]) {
    def liveUsername
    def livePassword
    def file
    new URL('https://path/file').withInputStream { i ->
        file.withOutputStream {
            it << i
        }
    }
    file.withReader { liveUsername = it.readLines().get(0) }
    file.withReader { livePassword = it.readLines().get(1) }

    def options = [
            IDENTITY_USER: liveUsername,
            IDENTITY_PASSWORD: livePassword]

    setEnv(delegate, options, overrides)

}

这是我收到的例外

java.lang.NullPointerException: Cannot invoke method withOutputStream() on null object

好像文件的功能无法使用。但是在我希望的groovy文件中可以使用Job DSL模板以及所有常规功能。

1 个答案:

答案 0 :(得分:2)

文件为空,因此在您调用方法时抛出NPE

def file
...
file.withOutputStream { // BANG!