2017-02-15 24 views
1

私はJenkins 2.19.4とPipeline:Declarative Agent API 1.0.1を持っています。読み込みプロパティを割り当てるための変数を定義できない場合は、どのようにreadPropertiesを使用しますか?Jenkins宣言型パイプライン:プロパティを挿入する方法

たとえば、SVNのリビジョン番号をキャプチャするために、私は現在、スクリプトスタイルで、次でそれをキャプチャ:

echo "SVN_REVISION=\$(svn info ${svnUrl}/projects | \ grep Revision | \ sed 's/Revision: //g')" > svnrev.txt

def svnProp = readProperties file: 'svnrev.txt' 

その後、私は使用してアクセスすることができます。

${svnProp['SVN_REVISION']} 

をそれ以来DeclarativeスタイルでsvnPropをdefするのは合法ではありません。どのようにreadPropertiesを使用していますか?

+0

上記のサンプルスクリプトはJenkinsfileのもので、パイプラインステップ "sh"でラップされています。 –

答えて

7

stepsタグ内のscriptステップを使用して、任意のパイプラインコードを実行できます。

のラインでそう何か:

pipeline { 
    agent any 
    stages { 
     stage('A') { 
      steps { 
       writeFile file: 'props.txt', text: 'foo=bar' 
       script { 
        def props = readProperties file:'props.txt'; 
        env['foo'] = props['foo']; 
       } 
      } 
     } 
     stage('B') { 
      steps { 
       echo env.foo 
      } 
     } 
    } 
} 

ここで私はステージ間の値を伝播するためのenvを使用していますが、他のソリューションを行うことは可能かもしれません。

+1

最初にこの例外を取得しました 'org.jenkinsci.plugins.scriptsecurity.sandbox.RejectedAccessException:スクリプトはstaticMethodの使用を許可されていませんorg.codehaus.groovy.runtime.DefaultGroovyMethods putAt java.lang.Object'私は" whitelist "に行きました"In-process Script Approvals"と "staticMethod org.codehaus.groovy.runtime.DefaultGroovyMethods putAt java.lang.Object'を承認しました。 –

+0

@ P.Beatty私は似たような問題を抱えています。ホワイトリストプロセスを詳細に記述することは可能ですか?私は紛失しています。どこから始めるべきか分かりません – Balkrishna

+1

気にしないでください。 "jenkinsにナビゲートする> jenkinsを管理する> In-process Script Approval" – Balkrishna

0

@ jon-sソリューションは、環境変数を設定しているため、スクリプト承認を許可する必要があります。これは同じ段階で実行する場合は必要ありません。

pipeline { 
    agent any 
    stages { 
    stage('A') { 
     steps { 
     writeFile file: 'props.txt', text: 'foo=bar' 
     script { 
      def props = readProperties file:'props.txt'; 
     } 
     sh "echo $props['foo']" 
     } 
    } 
    } 
} 
関連する問題