当前位置: 首页 > 面试题库 >

如何使用Jenkins中的Pipeline插件在Jenkinsfile中调用Java函数

微生新霁
2023-03-14
问题内容

我在詹金斯中使用管道插件。我Jenkinsfile有,numToEcho =1,2,3,4但我想致电Test.myNumbers()以获取值列表。

  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);
 }
}

问题答案:

您可以将逻辑编写在Groovy文件中,该文件可以保存在Git存储库,管道共享库或其他地方。

例如,如果您utils.groovy的存储库中有文件:

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

在您的中Jenkinsfile,您可以通过以下load步骤使用它:

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`…

另外,您可以签出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`…
}


 类似资料:
  • 问题内容: 在安装了“版本号插件”的Jenkinsfile中尝试此步骤: 并得到此错误: 在Jenkinsfile中使用此插件的正确方法是什么? 问题答案: 您需要使用它作为步骤。 看一看https://your_jenkins_url.com/pipeline- syntax/ 并检查已剪切生成器中VersionNumber步骤的所有选项。

  • 我知道我可以通过Jenkins RTC插件使用scm轮询,我只是想知道是否有一个如何通过管道插件的groovy脚本做到这一点的例子? 例如: 类似于上面的内容,但不是git,而是将rtc toolkit与prod url一起使用,并指定一个流或一个工作区。。。在任何地方都找不到示例,也不确定如何通过api实现它(或者如果可能的话?)

  • 我有一个groovy文件,我想从Jenkinsfile运行。 即加载脚本。groovy 但是,我不确定如何引用这个文件,如果它存储在与Jenkinsfile相同的目录中。我正在从git加载Jenkinsfile。我注意到它创建了一个名为的文件夹。它没有将其放在工作区目录中。我可以对文件夹进行硬编码,但我不确定这方面的规则,再次签出代码似乎有点多余。 默认情况下,它从工作区加载,而不是 我正在尝试将

  • 我们在Jenkins中使用gerrit-trigger,当一个新的变更集被推送审查时,构建被触发。 现在我们要介绍管道,并在供应链管理中使用定义管道的解决方案 因此我们希望当构建被触发时,下面的管道插件可以工作来检查这个refspec

  • 问题内容: 我正在尝试使用Text Finder插件编写jenkinsfile ,但我不知道它是如何工作的。 这是我的代码: 问题答案: 正如@mghicks已经提到的,并不是每个插件都支持Jenkins管道。在这种情况下,Text Finder插件不支持它。例如,您可以为此编写自己的groovy函数: 例如: 我们正在调用filterLogs函数,并提供参数“ ERROR”(在您的日志中搜索ER

  • 问题内容: 我在声明性jenkins管道中执行以下步骤:我使用libraryResource 创建来自文件夹的脚本。该脚本包含我的用户和某些用户的凭据。 这很好。我可以使用我的用户。现在,我正在寻找最好的方式来包括用户的凭据。我是否需要“嵌套”第二部分,还是可以再次添加“数组”? 问题答案: 当然,您可以使用一个块将多个凭证分配给不同的变量。