Jenkins 管道 sh returnsstdout 不工作

2023-12-22

我正在尝试使用 Jenkins pipeline sh 命令的 returnStdout 功能。此处定义https://jenkins.io/doc/pipeline/steps/workflow-durable-task-step/#code-sh-code-shell-script https://jenkins.io/doc/pipeline/steps/workflow-durable-task-step/#code-sh-code-shell-script

从之前的问题和答案中提取:是否可以从管道中的 sh DSL 命令捕获标准输出 https://stackoverflow.com/questions/36507410/is-it-possible-to-capture-the-stdout-from-the-sh-dsl-command-in-the-pipeline

我原来的代码:

node{
def output = sh(returnStdout: true, script: 'pwd')
println "output = ${output}"
}

及其结果。您可以看到我得到的是退出代码,而不是传递到变量中的结果:

[Pipeline] node {
[Pipeline] sh
[Update_Stageing_DB] Running shell script
+ pwd
/mnt/storage/jenkins/workspace/Update_Stageing_DB
[Pipeline] echo
output = 0
[Pipeline] } //node
[Pipeline] Allocate node : End
[Pipeline] End of Pipeline
Finished: SUCCESS

根据示例,我认为我可能需要添加 .trim() 所以我更新的代码如下所示:

node{
def output = sh(returnStdout: true, script: 'pwd').trim()
println "output = ${output}"
}

但这会导致整个工作失败:

[Pipeline] node {
[Pipeline] sh
[Update_Stageing_DB] Running shell script
+ pwd
/mnt/storage/jenkins/workspace/Update_Stageing_DB
[Pipeline] } //node
[Pipeline] Allocate node : End
[Pipeline] End of Pipeline
hudson.remoting.ProxyException: groovy.lang.MissingMethodException: No signature of method: java.lang.Integer.trim() is applicable for argument types: () values: []
Possible solutions: wait(), grep(), wait(long), times(groovy.lang.Closure), div(java.lang.Character), print(java.io.PrintWriter)
at org.codehaus.groovy.runtime.ScriptBytecodeAdapter.unwrap(ScriptBytecodeAdapter.java:58)
at org.codehaus.groovy.runtime.callsite.PojoMetaClassSite.call(PojoMetaClassSite.java:49)
at org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCall(CallSiteArray.java:48)
at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:113)
at com.cloudbees.groovy.cps.sandbox.DefaultInvoker.methodCall(DefaultInvoker.java:15)
at WorkflowScript.run(WorkflowScript:3)
at ___cps.transform___(Native Method)
at com.cloudbees.groovy.cps.impl.ContinuationGroup.methodCall(ContinuationGroup.java:55)
at com.cloudbees.groovy.cps.impl.FunctionCallBlock$ContinuationImpl.dispatchOrArg(FunctionCallBlock.java:106)
at com.cloudbees.groovy.cps.impl.FunctionCallBlock$ContinuationImpl.fixName(FunctionCallBlock.java:74)
at sun.reflect.GeneratedMethodAccessor771.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:606)
at com.cloudbees.groovy.cps.impl.ContinuationPtr$ContinuationImpl.receive(ContinuationPtr.java:72)
at com.cloudbees.groovy.cps.impl.ConstantBlock.eval(ConstantBlock.java:21)
at com.cloudbees.groovy.cps.Next.step(Next.java:58)
at com.cloudbees.groovy.cps.Continuable.run0(Continuable.java:154)
at org.jenkinsci.plugins.workflow.cps.CpsThread.runNextChunk(CpsThread.java:164)
at org.jenkinsci.plugins.workflow.cps.CpsThreadGroup.run(CpsThreadGroup.java:277)
at org.jenkinsci.plugins.workflow.cps.CpsThreadGroup.access$000(CpsThreadGroup.java:77)
at org.jenkinsci.plugins.workflow.cps.CpsThreadGroup$2.call(CpsThreadGroup.java:186)
at org.jenkinsci.plugins.workflow.cps.CpsThreadGroup$2.call(CpsThreadGroup.java:184)
at org.jenkinsci.plugins.workflow.cps.CpsVmExecutorService$2.call(CpsVmExecutorService.java:47)
at java.util.concurrent.FutureTask.run(FutureTask.java:262)
at hudson.remoting.SingleLaneExecutorService$1.run(SingleLaneExecutorService.java:112)
at jenkins.util.ContextResettingExecutorService$1.run(ContextResettingExecutorService.java:28)
at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:471)
at java.util.concurrent.FutureTask.run(FutureTask.java:262)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
at java.lang.Thread.run(Thread.java:745)
Finished: FAILURE

我确信我错过了一些基本的东西,但就我的一生而言,我看不出这个简单的代码有什么问题。任何帮助,将不胜感激。

詹金斯版本。 2.32.2


无方法签名:java.lang.Integer.trim()适用

该错误消息意味着sh步骤正在返回一个数值。
对我来说,只有当我使用returnStatus参数而不是returnStdout in the sh步骤调用。

确保您的插件是最新的,并且您使用了正确的参数;例如,如果您从远程 SCM 加载管道,则可以使用任何构建页面上侧边栏中的“重播”链接来准确查看加载了哪些管道脚本。

另外,如果你真的只需要运行pwd在 shell 步骤中,您可以使用以下命令来简化一点pwd https://jenkins.io/doc/pipeline/steps/workflow-basic-steps/#code-pwd-code-determine-current-directory管道步骤。

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

Jenkins 管道 sh returnsstdout 不工作 的相关文章

随机推荐

  • 具有多个 X 轴列的 ASP 图表

    我有一个包含两列的 SQL 表 销售人员和状态 状态可以是金 银 铜三种状态之一 如何创建一个图表 其中销售人员姓名沿 x 轴出现一次 但其姓名上方有三列用于显示每种状态的计数 谢谢 乔诺 如果我理解正确的话 你正在尝试做类似这篇文章的事情
  • 在QTabBar中隐藏底线

    似乎没有办法为底线 如下图所示 设置样式表QTabBar 我想将其删除 我怎样才能删除它 现在已经 6 7 个月没有使用 Qt 了 所以我不确定这是否有效 也无法测试它 给QTabBar drawBase http qt project o
  • 在Javascript中,为什么“this”运算符不一致?

    在 JavaScript 中 this 运算符在不同场景下可以指代不同的事物 通常 在 JavaScript 对象 内的方法中 它指的是当前对象 但当用作回调时 它变成对调用对象的引用 我发现这会导致代码出现问题 因为如果您使用 JavaS
  • 当无法推断 Rust 借用检查器中的生命周期时?

    在大多数情况下 Rust 编译器可以推断生命周期 如果生命周期范围是在运行时确定的 则表示必须显式标记生命周期 fn longest lt a gt x a str y a str gt a str if x len gt y len x
  • 如何让 Powershell 等到命令完成后再继续?

    我的脚本会在安装较新版本之前卸载 Windows 应用商店应用程序 我需要确保在安装之前卸载已完成 那么如何确保我已经等待了足够长的时间 Remove Appxpackage MyAppName wait here Add Appxpack
  • 如何使用 JDBC 从存储过程中获取*所有内容*

    当使用 JDBC 处理 SQL Server 存储过程时 我偶尔会遇到两种奇怪的行为 Issue 1 我在 SQL Server Management Studio SSMS 中运行一个存储过程 它返回一个结果集 然而 当我尝试 try C
  • 仅在第一次调用变量时才执行工作的 Pythonic 方式

    我的 Python 类有一些变量需要在第一次调用时进行计算 后续调用应该只返回预先计算的值 我不想浪费时间做这项工作 除非用户确实需要它们 那么有没有一种干净的 Pythonic 方式来实现这个用例呢 我最初的想法是第一次使用 proper
  • Android中如何将图像转换为字节数组

    我面临一个现实问题 我需要将图像转换为字节数组格式 以便我可以将字节数组上传到网络服务器 我已经尝试了很多但它不起作用 我还得到了字节数组的负值 我不确定在数组中获取字节值我做错了什么 下面是我的代码 请帮助我我做错了什么 Bitmap b
  • 未找到 APOC 程序

    CALL apoc export csv query match m Movie where m name Matrix return m name re sults csv 错误 Neo ClientError Procedure Pro
  • Python-camelot(安装时错误:GhostscriptNotFound)

    我正在尝试使用camelot从pdf中提取表格数据 但出现以下错误 Code tables camelot read pdf file name Error GhostscriptNotFound 请确保 Ghostscript 已安装并且
  • Azure 中的 Serilog 与 API 应用程序

    我已将 Serilog 集成到使用 Asp Net Core 2 0 开发的 WebApi 项目中 这是配置代码Program cs Log Logger new LoggerConfiguration Enrich FromLogCont
  • 将字符串转换为 C# 中的控件名称[重复]

    这个问题在这里已经有答案了 可能的重复 按名称在 C winforms 中查找控件 https stackoverflow com questions 4483912 find a control in c sharp winforms b
  • 找到两个向量之间的最佳/缩放/移位

    我有两个向量表示函数 f x 另一个向量 f ax b 即 f x 的缩放和移位版本 我想找到最好的规模和转变因素 最佳 通过最小二乘误差 最大似然等 有任何想法吗 例如 f1 0 0 450541598502498 0 083821377
  • 输入后忽略回车键的C代码

    我遇到了标准输入流中的 Enter 键或字符弄乱以下输入调用的问题 假设我有一个输入调用 所以我输入了内容 但随后将 Enter 键作为下一个输入调用的输入 我认为在c 中有cin ignore 来做到这一点 我就是找不到C版本 输入法有g
  • 如何在VBA中保存工作表

    我正在构建一个表单 当您填写该表单时 它应该生成 2 个文件作为输出 为了做到这一点 我在后台有 2 张纸 我根据用户输入的按钮将其保存 作为 csv 来填充 这是保存工作表的代码 Worksheets worksheetname Save
  • 带彩色输出的工头运行防护装置

    我可以从我的工头 procfile 中运行守卫 但输出并不像我想要的那样丰富多彩 我在输出中看到的唯一颜色来自 Foreman 我想要一个管理 rspec 黄瓜和茉莉花的保护文件 并且在这些测试运行时有漂亮的颜色输出 看起来好像工头忽略了防
  • 为什么 Magento 每个会话使用 2 个 cookie?

    出于数据安全和隐私原因 我想知道为什么 Magento 对一个前端会话使用两个 cookie 我所知道的是其中一个正在被设置Mage Core Model Cookie set 另一个在Zend Session expireSessionC
  • HTML & XHTML id 属性问题

    id 属性值可以以数字开头吗 对于 HTML 没有 http www w3 org TR html401 types html type name http www w3 org TR html401 types html type nam
  • 安卓中的人脸识别

    我需要在 Android 4 0 的应用程序中实现人脸识别登录 由于 Android Ice Cream Sandwich 中提供了人脸识别解锁功能 是否有任何开放的 SDK 或内置库来实现此功能 到目前为止 我遇到过外部 API 例如ht
  • Jenkins 管道 sh returnsstdout 不工作

    我正在尝试使用 Jenkins pipeline sh 命令的 returnStdout 功能 此处定义https jenkins io doc pipeline steps workflow durable task step code