2017-10-24 22 views
0

私はジェンキンスパイプライン用のライブラリをコーディングしています。私は[INFO], [WARNING]のように私のメッセージに異なるフォーマットを印刷したいと思います。Jenkinsコンソールの出力に書き込む方法は?

これまでのところ、私はこれがあります。

import org.foo.Output 

def call(body) { 

    def config = [:] 
    body.resolveStrategy = Closure.DELEGATE_FIRST 
    body.delegate = config 
    body() 

    def out = new Output() 

    node("${config.slaveNodeName}") { 
     try { 
      stage ('CLONE') { 
       out.info("SOME VERY USEFUL INFORMATION") 
     ... 

そして、私のorg.foo.Outputクラスで:

package org.foo 

import java.util.logging.Logger 


class Output { 
    private static final Logger LOGGER = Logger.getLogger(Output.class.getName()); 

    def info(msg){ 
     LOGGER.info("${msg}") 
     echo "[INFO] ${msg}" <-- gives me an exception described below 
    } 
} 

私はしかし、私はこのメッセージをリダイレクトしたいと思い、私のジェンキンスログに[INFO] SOME VERY USEFUL INFORMATIONを見ることができますがジェンキンスはコンソールを出力する。

どうすればいいですか?

例外:

hudson.remoting.ProxyException: groovy.lang.MissingMethodException: No signature of method: org.foog.Output.echo() is applicable for argument types: (org.codehaus.groovy.runtime.GStringImpl) values: [[INFO] SOME VERY USEFUL INFORMATION] 
Possible solutions: each(groovy.lang.Closure), info(java.lang.Object), wait(), grep(), any(), find() 
    at org.codehaus.groovy.runtime.ScriptBytecodeAdapter.unwrap(ScriptBytecodeAdapter.java:58) 
    at org.codehaus.groovy.runtime.callsite.PogoMetaClassSite.call(PogoMetaClassSite.java:54) 
    at org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCall(CallSiteArray.java:48) 
    at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:113) 
    at com.cloudbees.groovy.cps.sandbox.DefaultInvoker.methodCall(DefaultInvoker.java:19) 
+0

https://jenkins.io/doc/pipeline/steps/workflow-basicを-steps /#code-echo-code-print-message? – jonrsharpe

+0

@jonrsharpe動作しません、私は私の質問を更新しました。 –

+1

クラス内でメソッドを探します。たとえば、 'def out = new Output(echo)'を実行すると、インスタンスにステップへのアクセス権が与えられます。 – jonrsharpe

答えて

1

バルター、これを試してみてください。私のスクリプトではうまくいきました。あなたのスクリプトでもうまくいくと思います。

node("${config.slaveNodeName}") { 
     try { 
      stage ('CLONE') { 
       out.info(this,"SOME VERY USEFUL INFORMATION") 

をして、このようなクラスのGroovyスクリプトを変更します:

グルーヴィーなスクリプトでは、これを追加

def info(script,msg){ 
     LOGGER.info("${msg}") 
     script.echo "[INFO] ${msg}" <-- gives me an exception described below 
    }