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

2024-01-12

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

  1. 如何在 Jenkinsfile 中调用 myNumbers() java 函数?
  2. 或者我是否需要有一个单独的 groovy 脚本文件,并且该文件应该放置在具有 Test 类的 java jar 中?

我的詹金斯文件:

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 存储库中,或者保存在管道共享库 https://jenkins.io/doc/book/pipeline/shared-libraries/,或其他地方。

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

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

In your Jenkinsfile,你可以通过这样使用它load step https://jenkins.io/doc/pipeline/steps/workflow-cps/#code-load-code-evaluate-a-groovy-source-file-into-the-pipeline-script:

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`…
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何使用Jenkins中的Pipeline插件调用Jenkinsfile中的java函数 的相关文章

  • Jenkins 和 Github 不使用 SSH 密钥

    我已将 Jenkins 设置为从 Github 上的私有存储库中提取特定作业 尽管我已经生成了私钥 公钥并将其作为部署密钥添加到 github 但 Jenkins 似乎并未使用 SSH 密钥 当我从 Jenkins 用户进行 git clo
  • 在另一个模块中使用自定义 gradle 插件模块

    我正在开发一个自定义插件 我希望能够在稍后阶段将其部署到存储库 因此我为其创建了一个独立的模块 在对其进行任何正式的 TDD 之前 我想手动进行某些探索性测试 因此 我创建了一个使用给定插件的演示模块 到目前为止 我发现执行此操作的唯一方法
  • 无法从 jenkins 作为后台进程运行 nohup 命令

    更新 根据下面的讨论 我编辑了我的答案以获得更准确的描述 我正在尝试从詹金斯运行 nohup 命令 完整的命令是 nohup java jar home jar server process 0 35 jar prod gt gt var
  • Android PhoneGap 插件,UI 选项卡栏,调整 WebView 大小

    我正在创建一个美味的 PhoneGap 插件 希望一旦它能被打开 准备好了 插件基本完成了 我只需要一个漂亮的用户界面 相互作用 简而言之 我想创建一个 本机 android 工具栏组件 如果您实现 PhoneGap UIControls
  • 如何在 Eclipse 下载站点上查找哪些功能包含所需的插件

    在针对目标平台开发 RCP 应用程序时 我 和别的 https stackoverflow com questions 10001143 eclipse rcp target platform bundle org eclipse ui v
  • 如何使用 jenkins 声明性管道新语法测试 sh 脚本返回状态

    使用新的 jenkins 声明性管道语法 我想测试 sh 脚本执行的返回状态 是否可以不使用脚本步骤 脚本管道 工作 stage Check url node timeout 15 waitUntil sleep 20 def r sh s
  • 使用 jQuery 插件及其依赖项的指南 [关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 jQuery 插件通常依赖于外部文件 jQuery 库 样式表 CSS 图像 其他插件等 使用 和编写 解决依赖关系放置问题的 jQuery 插
  • 如何仅根据拉取请求在 Jenkins 中运行阶段?

    我现在有一个基于 Jenkinsfile 的管道 其中包含多个阶段 每次提交到 Github 时都会由 webhook 触发 我想在每次提交时保持 构建 和 单元测试 阶段运行 但仅在分支准备拉取请求时运行 集成测试 阶段 我想要的是 st
  • Puppet 3 文件递归速度非常慢

    我在 Amazon Linux 2012 09 上使用 Puppet 3 我的清单之一设置并重新配置了一些目录 其中一项任务只是将文件夹所有者和组递归更改为另一个用户 然而 这需要 60 秒以上才能完成 并且目录中几乎没有任何内容 终端中的
  • 如何使用ssh直接连接远程docker容器

    我想直接使用 ssh 连接到远程运行的 Docker 容器 通常我可以 ssh i privateKey user host docker ps which will list all running containers docker e
  • 在 Jenkins 管道脚本中找不到文件

    我正在尝试让当前在 Jenkins master 上运行的管道脚本在远程 Jenkins 节点上执行 但我有一个奇怪的现象FileNotFound例外 我能够重现该问题的最基本版本的管道是这样的 node remoteNode env SE
  • 在 Angular 2、4、5、6 中实现插件架构/插件系统/可插拔框架

    2018 年 5 月 24 日更新 从我原来的帖子来看 我们现在已经是 Angular 的 3 版本了 但仍然没有最终的可行解决方案 Lars Meijdam LarsMeijdam 提出了一种有趣的方法 当然值得一看 由于专有问题 他不得
  • Android Studio 上的代码 Iris 插件

    我正在尝试使代码 iris 插件在 Android studio 上工作 我按右键单击 gt 创建代码虹膜图 然后我收到一条通知 表明我的图表已准备就绪 但我不知道该图何时存储 创建的文件的名称是什么以及如何打开它 有任何想法吗 CODE
  • SonarQube 5.1.1 加载项目存储库时发生读取超时错误

    在使用声纳运行器分析多模块项目时 我经常收到 读取超时 错误 我为 Jenkins 配置了 SonarQube 5 1 1 我们的项目是一种 Web 项目 我们有几个用于分析的声纳插件 如 web css java findbugs js
  • Netezza 中的 HASH8 函数使用哪种 Jenkins 哈希算法?一次一个/lookup2/lookup3/SpookyHash?

    我需要实现 hash8 函数 或者用 Java 模拟它的输入 输出 Netezza 的简短文档说 hash8 实现了 Jenkins 算法 但是有多种算法 修订版那个名字 http en wikipedia org wiki Jenkins
  • jbehave 与 jenkins 的集成

    我必须将 jbehave 与 jenkins 集成 但我不知道该怎么做 我看到我必须在 Jenkins 中创建一个任务 但我不知道应该在哪里连接 jbehave 与此任务 有人可以帮助我吗 Thanks Sarang 所以我假设您已将 JB
  • 有没有适用于 IE 的 websocket 插件?

    有没有适用于 IE 的插件 我可以在 IE 7 8 9 中使用 Websockets 我还没找到 socket io 使用的后备方案之一是 flash gimite web socket js https github com gimite
  • 用于生成 ISO 文件的 Maven 插件

    有没有可以生成ISO镜像的maven插件 我需要获取一些模块的输出 主要是包含 jar 的 zip 文件 并将它们组合成一个 ISO 映像 Thanks 现在有一个 ISO9660 maven 插件可以完成这项工作 https github
  • 从 Jenkinsfile 设置管道名称和描述

    我正在尝试将 jenkins 管道的 poc 作为代码 我正在使用 Github 组织文件夹插件来扫描 Github 组织并为每个分支创建作业 有没有办法显式定义从 Jenkinsfile 获取的管道作业的名称 我还想添加一些职位描述 你需
  • 如何在 gradle findbugs 插件中将报告的错误打印到控制台?

    我正在使用 Gradle FindBugs 插件 如何将报告的错误打印到控制台 PMD 插件有一个 consoleOutput 属性 FindBugs 是否有类似的属性 如你看到的here https gradle org docs cur

随机推荐

  • 如何从phonegap android插件返回数组或其他集合元素类型

    这是我在 java 插件中测试代码的一部分 我正在使用phonegap 2 7 public boolean execute String action JSONArray args CallbackContext callbackCont
  • Requirejs - 在加载 data-main 之前配置 require

    我们第一次使用 requirejs 我在构建依赖项时遇到了麻烦 我已将主 app js 文件定义为 index html 中的 data main 属性 但是 我有一个文件定义了所有需要的路径 垫片配置 并且我希望它在 app js 文件之
  • 我可以使用 git 的脚本化提交模板吗?

    我们正在处理票证 当我们在第一行的 git 提交消息中使用票证编号时 票证就会使用提交消息进行更新 为了简单起见 我们总是在带有提交号的分支上工作 现在我想看到一条提交消息 其中票号已被填写 这一定是可能的 因为分支已经在提交模板中 但在被
  • 高效的弦修剪

    我有一个String价值 我想要trim https doc rust lang org stable std string struct String html method trim它 我可以做类似的事情 let trimmed s t
  • 计算每列中空值的数量

    我遇到过一个数据库 其表太宽 600 列 即使在没有参数的情况下询问前 100 行也需要 4 秒 我想把这些桌子缩小一点 为了弄清楚哪些列可以最容易地移动到新表或完全删除 我想知道每列中有多少个空值 这应该告诉我哪些信息可能最不重要 我将如
  • 何时将我的项目拆分为多个 C 文件? (大型项目的良好实践)[关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 我现在正在做一个C语言的大项目 我正在做其中的特定部分 另一个是由其他人完成的 我想知道什么时候应该将我的项目拆分为多个c文件 以及编写的最佳实
  • 使用 XOM 在具有默认命名空间的 xml 上应用 xpath

    我有下面的 XML 其中包含默认名称空间
  • 从字典列表中获取最后更新的字典消息

    我正在尝试从数据流中获取实体的最新更新消息 数据以字典列表的形式出现 其中每个字典都是实体的更新消息 我只需要该实体的最新更新 我的输入是一个字典列表 输出需要是一个字典的字典 注意 仅长度更新 类别保持静态 我知道哪一个是最新更新 因为对
  • 芹菜与亚马逊 SQS

    我想用亚马逊SQS http aws amazon com sqs 作为经纪人支持Celery http celeryproject org SQS 传输实现Kombu https github com ask kombu Celery 依
  • 将 url 和 hash 与 Bootstrap ScrollSpy 一起使用

    我有一个基于 twitter bootstrap 的导航菜单栏 我想应用滚动间谍来突出显示 我使用普通的 php include 将菜单包含到多个页面中 因此我使用文件名加书签链接到文件 例如 products php foo 但滚动间谍希
  • Angular 2—更改组件选择器

    The Angular 2 文档 https angular io docs ts latest guide displaying data html假设要定义这样的组件 使用魔术字符串作为选择器名称 import Component fr
  • 查找另一个字段mongodb的不同值组

    我收集了这样的文件 id ObjectId 5c0685fd6afbd73b80f45338 page id 1234 category list football sport time broadcast 09 13 id ObjectI
  • IOS越狱如何拦截短信/短信

    我目前正在尝试编写一个应用程序来拦截文本消息并根据该消息的内容做出反应 我试图挂钩 receivedMessage struct CKSMSRecord message replace BOOL replaceCKSMSService 类中
  • HTML 标签正在转换

    我有以下代码片段来获取存储在数据库表中的 XML 数据的输出 ServletOutputStream os response getOutputStream String contentDisposition attachment file
  • Android NDK:为什么 ndk-build 不在 Eclipse 中生成 .so 文件和新的 libs 文件夹?

    我按照本教程的步骤进行操作 http mindtherobot com blog 452 android beginners ndk setup step by step http mindtherobot com blog 452 and
  • python:如何绘制以节点为中心的二维不连续数据?

    我有一个二维数据和二维四边形网格 描述了细分为补丁的域 数据在每个网格节点处定义 数据中的不连续性存在于补丁边界处 即数据在同一位置处被多重定义 如何使用 Python 绘制这些数据 并在节点之间进行线性插值并正确表示沿每个面片面的不连续值
  • 将数据库作为 Docker 容器运行还是在裸机服务器上运行?

    数据库被设计为消耗所有可用的内存 CPU 和 IO Docker 不应该用于生产中的数据库是否有好的 坏的原因 可能这个问题也适用于其他工具 例如 MOM Apache Kafka Apache ActiveMQ 等 Docker 不是一个
  • PHP pthread 似乎不是多线程

    如果可能的话请提供帮助 我打算从数据库中提取 X 行 将它们分成 20 个数组的数组 并将它们传递给一个线程以同时处理 为了确保该进程同时工作 我创建了一个快速线程 该线程回显线程号 然后计数到 20 我期望看到类似 1 at 1 然后 2
  • 在浏览器中生成、查看和保存 SVG 客户端

    我正在编写一个 HTML5 JS 的小工具来生成 SVG 图像 我在这样做时遇到了很多问题 虽然我对大多数问题都有解决方法 但至少在一种情况下 我觉得必须有更好的方法 还有一些事情仍然只是aren t在职的 目前 这是我自己使用的 因此跨浏
  • 如何使用Jenkins中的Pipeline插件调用Jenkinsfile中的java函数

    我在詹金斯中使用管道插件 我的Jenkinsfile has numToEcho 1 2 3 4但我想打电话Test myNumbers 获取值列表 如何在 Jenkinsfile 中调用 myNumbers java 函数 或者我是否需要