热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

Jenkins管道sh似乎不尊重shell命令中的管道

如何解决《Jenkins管道sh似乎不尊重shell命令中的管道》经验,为你挑选了1个好方法。

我在版本2.32.2的管道中使用Jenkins文件.

由于各种原因,我想从pom中提取版本字符串.我希望我不必添加maven帮助插件并使用evaluate.

我很快想出了一个小的sed表达式,将它从使用管道的pom中取出,并在执行程序的jenkins工作区中的命令行上运行.

$ sed -n '//,///g' 1.0.0-SNAPSHOT

它可能会被优化,但我想理解为什么管道似乎在管道sh命令失败.我玩过各种字符串格式,目前正在使用一个美元的字符串.

管道步骤如下所示,以便轻松输出命令字符串:

script {
    def ver_script = $/sed -n '//,///g'/$
    echo "${ver_script}"
    POM_VERSION = sh(script: "${ver_script}", returnStdout: true)
    echo "${POM_VERSION}"
}

当在jenkins管道中运行时,我得到以下控制台输出,它似乎将管道命令分离为单独的命令:

[Pipeline] script
[Pipeline] {
[Pipeline] echo
sed -n '//,///g'
[Pipeline] sh
[FRA-198-versioned-artifacts-44SD6DBQOGOI54UEF7NYE4ECARE7RMF7VQYXDPBVFOHS5CMSTFLA] Running shell script
+ sed -n //,///g
sed: couldn't write 89 items to stdout: Broken pipe
[Pipeline] }
[Pipeline] // script

关于如何在jenkins文件中正确使用管道命令的任何指导?



1> sporkthrower..:

我终于对它进行了一些思考,并意识到管道子壳可能导致了这个问题.我知道一些eval的邪恶,但我最终在eval中包装它:

script {
    def ver_script = $/eval "sed -n '//,///g'"/$
    echo "${ver_script}"
    POM_VERSION = sh(script: "${ver_script}", returnStdout: true)
    echo "${POM_VERSION}"
}   


推荐阅读
  • Android中解析XML文件的实践指南
    本文详细介绍了在Android应用开发中解析XML文件的方法,包括从本地文件和网络资源获取XML文件的不同途径,以及使用DOM、SAX和PULL三种解析方式的具体实现。 ... [详细]
  • Jenkins实例 Maven项目
    目录一.准备二.创建项目创建maven项目源码管理部分构建编译PostSteps打包构建后操作三.测试一.准备先看初始化设置,如果做完初始化,则跳过安装如下插件MavenInteg ... [详细]
  • 本文详细介绍了 Kubernetes 集群管理工具 kubectl 的基本使用方法,涵盖了一系列常用的命令及其应用场景,旨在帮助初学者快速掌握 kubectl 的基本操作。 ... [详细]
  • 最近同事提了一个需求过来,他觉得项目对于第三方日志记录的太多了,只想记录一些业务相关的日志减少对于框架日志的显示。具体要求就是对于框架日志只显示warn等级以上的,而业务日志显示info等级以上 ... [详细]
  • 全能终端工具推荐:高效、免费、易用
    介绍一款备受好评的全能型终端工具——MobaXterm,它不仅功能强大,而且完全免费,适合各类用户使用。 ... [详细]
  • 本文介绍如何在Ubuntu环境下为OpenWrt系统构建并安装首个'Hello World'应用程序的IPK包。文章不仅涵盖了基本的环境搭建,还详细说明了代码编写、Makefile配置及最终的IPK包生成与安装过程。 ... [详细]
  • 本文探讨了如何使用ls -lsh命令排除总大小输出,仅显示文件大小的方法,并提供了几种实现这一目标的解决方案。 ... [详细]
  • Celery在使用前必须实例化,称为application或app。app是线程安全的,具有不同配置、组件、task的多个Celery应用可以在同一个进 ... [详细]
  • 软件项目管理实践——Jenkins持续集成与Maven、GitHub的应用
    本文详细介绍了如何利用Jenkins实现持续集成,以及Maven和GitHub在项目开发中的具体应用。包括环境搭建、工具安装、项目创建及代码管理等关键步骤。 ... [详细]
  • 在 CentOS 7 上部署和配置 RabbitMQ 消息队列系统时,首先需要安装 Erlang,因为 RabbitMQ 是基于 Erlang 语言开发的。具体步骤包括:安装必要的依赖项,下载 Erlang 源码包(可能需要一些时间,请耐心等待),解压源码包,解决可能出现的错误,验证安装是否成功,并将 Erlang 添加到环境变量中。接下来,下载 RabbitMQ 的 tar.xz 压缩包,并进行解压和安装。确保每一步都按顺序执行,以保证系统的稳定性和可靠性。 ... [详细]
  • 无论你是刚毕业的大学生,还是想在职业中寻求进步的经验丰富的IT专家,这些提示都可以帮你成为DevOps工程师。DevOps工程是一个备受称赞的热门职业。不管你是刚毕业正在找第一份工 ... [详细]
  • Situation:UsingbatchscripttoretrievecertainvaluesfromaJSON.Ivegotthefollowingbatchscr ... [详细]
  • 如何解决《子流程中的多个管道》经验,为你挑选了1个好方法。 ... [详细]
  • HowdoIreceivetextfromstdinintosublimetexteditor?Withvimitworkslikethis:如何从stdin接收文本到 ... [详细]
  • 本文详细介绍了 Linux 系统中用户、组和文件权限的设置方法,包括基本权限(读、写、执行)、特殊权限(SUID、SGID、Sticky Bit)以及相关配置文件的使用。 ... [详细]
author-avatar
mobiledu2502870587
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有