2017-12-22 10 views
0

助けてください。 envはnullです。Jenkins:Jenkinsfileのパイプラインのenvがnullです

Jenkinsfile:

node { 
    println "Your ENV:" 
    println env.dump 
    println "Your params:" 
    println params.dump 
} 

ジェンキンス出力:

[Pipeline] properties 
[Pipeline] node 
Running on foobarquux in c:\workspace\123abc 
[Pipeline] { 
[Pipeline] echo 
Your ENV: 
[Pipeline] echo 
null 
[Pipeline] echo 
Your params: 
[Pipeline] echo 
null 

私は私の環境変数がnullにならないことを期待しています。 env.dumpがヌルでないこと、そしてprintln env.dumpが実行されるときにYour ENV:を超えて何かを見ることを期待しています。


@mkobitから非常に有益なコメントを読んだ後、私は私がdumpために括弧を必要と実現し、さらには彼らとジェンキンスは、セキュリティ例外がスローされます。

+0

[MVCE](https://stackoverflow.com/help/mcve)を入力してください。あなたが何を期待しているのかは不明です。 – mkobit

+1

@mkobit。私は、私が期待していることを示すために質問を編集しました。 –

+0

'dump'環境変数または' dump'ビルドパラメータをどこで設定していますか?何が「ヌル」であってはならないと思いますか? – mkobit

答えて

0

は、Rubyとは異なっている。この

node { 
    println "Your ENV:" 
    println ${env.dump} 
    println "Your params:" 
    println ${params.dump} 
} 
+0

これはなぜ機能するのですか?文字列ではなく文字列補間?または、ここでいくつかのグルーヴィーな言語機能が欠けていますか? – StephenKing

+0

エラーを受け取りました... 'java.lang.NoSuchMethodError:ステップ[acceptGitLabMR、addGitLabMRComment、archive、bat、build ...]の中にそのようなDSLメソッド '$'は見つかりませんでした。 @StephenKingは、これが@chenchukからの有効な提案ではないと言っていますか?私には奇妙に見えます。あなたは '' $ {env.dump} ''を行うことができますが、それは冗長なようです。私はRubyの文字列補間に慣れていて、 '#{env.dump} ''のように見えます。ルビーでは 'env.dump'を使うだけです。 –

+2

はい、AFAIKこの回答は間違っています。エラーメッセージでそれを確認してください。 Groovyの文字列補間はRubyのように機能し、 '#'を '$'記号で置き換えるだけです。 – StephenKing

1

Groovyのオプションの括弧requires at least one parameterを、してみてください。

Method calls can omit the parentheses if there is at least one parameter and there is no ambiguity:

ので、dump() methodあなたはenv.dump()params.dump()を行うだろう呼び出します。ただし、このメソッドはホワイトリストに登録されず、オブジェクトのすべてのフィールドが印刷されるため、セキュリティ例外が発生します(サンドボックスやJenkinsセキュリティを使用している場合)。

関連する問題