操作(、外部のGroovyスクリプトをロードし、ノーなどsh
ステップに呼び出していないしてください)Jenkinsfileで関数を定義して呼び出す方法は?
を、私はこのテーマに関連した質問の束を見てきたが、それらのどれもが受け入れ可能な解決策になるものを提供しています私は追加または削除するかどうかに応じて、
@NonCPS
def encodeProperties(Map properties) {
properties.collect { k, v -> "$k=$v" }.join('|')
}
node('dockerized') {
stage('Whatever') {
properties = [foo: 123, bar: "foo"]
echo encodeProperties(properties)
}
}
:私はここに、最小限の例ですので、onelinerですが、パイプラインの制限は、それが不可能なことウンター言語で有用何かを書くために作られた...
実行する必要があります@NonCPS
注釈、またはty引数のpe宣言、エラーは変更されますが、何が起こったのかについて何らかの理由を与えることはありません。それは基本的にはランダムなノイズであり、状況の現実と矛盾します(時には、無関係なオブジェクトにはメソッドencodeProperties
がないと主張します)。誰も試していなかったシグニチャのメソッドencodeProperties
を見つけることができない
悲惨な品質の文書を読んだことで、一般的な関数がシリアライズ可能ではない可能性があることが理解されています。これをGroovyインタプリタに明示的に説明する...申し訳ありませんが、これは意味をなさないですが、これはおおまかにドキュメントに書かれています。collect
内部でstage
creatを使用しようとしています。新しいエラーのロード...少なくとも、GroovyのバージョンがGroovy標準の大部分を実装していないことを著者が告白しているということで、少なくとも理解できます...
私はSOにコピーして編集した例ではタイプミスです。実際のスクリプトで私はそれが正しい実行しています。 – wvxvw
@wvxvw次に、そのコードを実行しようとしたときにどんな例外が発生したのかを明確にしてください。それは私のためにうまく動作します。 –