0

私は、MavenプロジェクトのCICDのための宣言的なJenkinsパイプラインを書いています。私はJenkinsfile(宣言的)のスクリプトブロック内に環境変数を作成する方法

environment { 
     REL_VER = '0.1-alpha1' 
     DEV_VER = '0.1-SNAPSHOT'  
    } 

など、そのよう 0.1-rc10.20-alpha10.15-beta2としての形を取ることができる REL_VERという環境変数を設定し、私は REL_VERを分割し、シェルコマンドに osgi_verという名前の最初の要素を渡す必要があります私は stepsで実行します私はエラー org.jenkinsci.plugins.scriptsecurity.sandbox.RejectedAccessException: Scripts not permitted to use staticMethod jenkins.model.Jenkins getInstance

を取得していますが this post

stages { 
     stage('package') { 
      steps { 
       script { 
        def vars = Jenkins.instance.getGlobalNodeProperties()[0].getEnvVars() 
        def osgi_ver = vars['REL_VER'].tokenize('-')[0] 
       } 
       sh "echo ${osgi_ver}" 

       withMaven(
        maven: 'maven-3.3.9', 
        mavenSettingsConfig: 'dist-maven-settings', 
        mavenLocalRepo: '.m2repo') { 

        sshagent (credentials: ['dist-serv']) { 
         sh "sed -i '/setSystemExtraPackages/s/.*/\t\t.setSystemExtraPackages(new String[]{\"com.xxx;version=${osgi_ver}\"}));/' DsgPluginTest.java" 

の回答に基づいてJavaファイル内の単語を交換します

env varを操作し、作成されたvarを宣言型パイプラインの後のステップのパラメータとして送信する正しい方法は何ですか?

答えて

1

Jenkins.instanceに電話をかけることができません。しかし、環境変数を取得する必要はありません。このようなenv.REL_VER作品:

pipeline { 
    agent { label 'docker' } 
    environment { 
    REL_VER = '0.1-alpha1' 
    } 
    stages { 
    stage('build') { 
     steps { 
     script { 
      def osgi_ver = env.REL_VER.tokenize('-')[0] 
      echo "osgi_ver in script block: ${osgi_ver}" 
      withMaven(maven: 'maven-3.3.9', mavenSettingsConfig: 'dist-maven-settings', mavenLocalRepo: '.m2repo') { 
      sshagent (credentials: ['dist-serv']) { 
       sh "sed -i '/setSystemExtraPackages/s/.*/\t\t.setSystemExtraPackages(new String[]{\"com.xxx;version=${osgi_ver}\"}));/' DsgPluginTest.java" 
      } 
      } 
     } 
     } 
    } 
    } 
} 

ノートあなたがscriptブロック内のローカル変数を定義している場合は、それに対するすべての参照も同じscriptブロックでなければならないこと。

関連する問題