2017-03-14 3 views
1

jenkinsでパイプラインプラグインを使用しています。私のJenkinsfilenumToEcho =1,2,3,4ですが、Test.myNumbers()に電話して値のリストを取得したいと思います。ジェンキンスでPipelineプラグインを使用してJenkinsfileでjava関数を呼び出す方法

  1. JenkinsfileでmyNumbers()Java関数を呼び出すにはどうすればよいですか?
  2. また、別のGroovyスクリプトファイルとそのファイルをTestクラスを持つjava jarの中に置く必要がありますか?

マイJenkinsfile:

def numToEcho = [1,2,3,4] 

def stepsForParallel = [:] 

for (int i = 0; i < numToEcho.size(); i++) { 
def s = numToEcho.get(i) 
    def stepName = "echoing ${s}" 

    stepsForParallel[stepName] = transformIntoStep(s) 
} 
parallel stepsForParallel 

def transformIntoStep(inputNum) { 
    return { 
     node { 
      echo inputNum 
     } 
    } 
} 



import com.sample.pipeline.jenkins 
public class Test{ 

public ArrayList<Integer> myNumbers() { 
    ArrayList<Integer> numbers = new ArrayList<Integer>(); 
    numbers.add(5); 
    numbers.add(11); 
    numbers.add(3); 
    return(numbers); 
} 
} 

答えて

1

あなたはGitのリポジトリ内、またはPipeline Shared Library、または他の場所に保つことができるGroovyのファイルにあなたのロジックを書くことができます。

def utils 
node { 
    // Check out repository with utils.groovy 
    git 'https://github.com/…/my-repo.git' 

    // Load definitions from repo 
    utils = load 'utils.groovy' 
} 

// Execute utility method 
def numbers = utils.myNumbers() 

// Do stuff with `numbers`… 

:あなたのJenkinsfile

List<Integer> myNumbers() { 
    return [1, 2, 3, 4, 5] 
} 
return this 

、あなたはload stepを経由して、このようにそれを使用することができます:あなたはあなたのリポジトリ内のファイルutils.groovyを持っている場合たとえば

、また、Javaコードをチェックアウトして実行し、出力を取り込むこともできます。次に、それをリストやパイプラインの後半に必要なデータ構造に解析することができます。たとえば:

node { 
    // Check out and build the Java tool 
    git 'https://github.com/…/some-java-tools.git' 
    sh './gradlew assemble' 

    // Run the compiled Java tool 
    def output = sh script: 'java -jar build/output/my-tool.jar', returnStdout: true 

    // Do some parsing in Groovy to turn the output into a list 
    def numbers = parseOutput(output) 

    // Do stuff with `numbers`… 
} 
+0

Thanks..thisは、問題がある、私は.groovyファイルの中でその関数を記述カント、それはのリスト(実際のJava機能は、データを盗んますfile.Theのjavaでなければならない非常にhelpful..Actuallyです値)を.groovyファイルに書き込むことはできません。どうすればJenkinsfileやgroovyscriptからJavaメソッドを呼び出すことができますか? – User12345

+0

Jenkinsfile: ノード{ sh 'java jar titanRead.jar' echo inputNum } 上記の部分は並列部分です。この並列実行の数はリストのサイズに依存します(上記のプログラムリストのサイズは5であるので、それはタイタンから読み込まれます)。そのリストも、私はtitan dbからjava関数を使用して取得する必要があります。 – User12345

+1

Jenkinsで何かを実行できるので、Javaプログラムを実行してその出力を解析できます。私は例を含める答えを更新しました。 –

関連する問題