在 Jenkins 管道 shell 中运行嵌套命令

2023-12-12

我想在 Jenkins 管道中运行嵌套 shell 命令,例如如下所示:

docker stop $(docker ps -aq)

不幸的是,当我将其格式化为管道语法时:

sh('docker stop $(docker ps -aq)')

詹金斯似乎没有正确运行它们,但输出:

"docker stop" requires at least 1 argument(s).

我尝试在 bash 下运行命令,如下所示:在 jenkins 管道上运行 bash 命令但最终遇到类似的问题。有什么想法如何解决这个问题吗?


如果将 shell 命令扩展为两行,这对于 Jenkins Pipeline 来说会变得更容易:

  • 第一个捕获要停止的 Docker 容器。
  • 第二个命令用于停止第一个命令中捕获的那些 Docker 容器。

我们使用第一行将 shell 命令的输出捕获到变量中:

containers = sh(returnStdout: true, script: 'sudo /usr/bin/docker ps -aq')

然后,我们使用第二个命令对存储在变量中的第一个命令捕获的输出进行操作:

sh("sudo /usr/bin/docker stop $containers")

请注意,docker命令通常对输出感到满意docker ps -aq用于与其他命令一起操作,但如果它不喜欢存储在变量中的输出,您可以像下面这样重新格式化它:

containers = sh(returnStdout: true, script: 'sudo /usr/bin/docker ps -aq').trim()

例如,这将去除前导空格和尾随换行符。 Docker CLI 通常不关心这一点,但这里可能需要进行一些重新格式化。

由于删除此处的换行符会导致组合容器 ID 很长,因此我们需要(如您所述)将其替换为空格以分隔容器 ID。这将使存储在的字符串的格式containers多变的:

containers = sh(returnStdout: true, script: 'sudo /usr/bin/docker ps -aq').replaceAll("\n", " ")

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

在 Jenkins 管道 shell 中运行嵌套命令 的相关文章

  • 无法使用 jenkins 运行 python 脚本

    我正在尝试运行 Python 作业 我创建了以下文件夹 C Users herod jenkins ws workspace window testing 并向其中添加脚本 testing py 该脚本非常简单 if name main p
  • Jenkins sh 标签:“sh”的参数必须明确命名

    我知道Jenkins Pipeline sh 显示名称 标签 https stackoverflow com questions 39414921 jenkins pipeline sh display name label 5467642
  • npx:shell-auto-fallback 参数已被删除

    老实说 我不记得我最后在我的机器上安装了什么 我相信它正在酝酿 gatsby cli 无论如何 从昨天早上开始 当我打开新实例或重置终端 打开新选项卡 源 zshrc 等 时 我的终端一直给出以下错误 Last login Tue Nov
  • Jenkins 无法访问 java : localhost jenkins[807]: 启动 Jenkins bash: /usr/bin/java: 权限被拒绝

    我已经在centos 7上安装并配置了jenkins 我已经添加了有效的java路径即文件中的 usr bin java etc init d jenkins 以下是 java 路径详细信息 lrwxrwxrwx 1 root root 2
  • 詹金斯更改链接

    Jenkins UI 中 更改 链接的用途是什么 谁能指出描述 更改 链接的 Jenkins 文档 当 Jenkins 拉取源代码时 它会获得新的 SVN 修订版或新的 Git SHA1 此链接显示自上次构建以来 SCM 的更改
  • 使用 nginx http auth 保护 Jenkins(回调 url 除外)

    我在我的服务器上安装了 jenkins 我想用 nginx http auth 来保护它 以便请求 http my domain com 8080 http ci my domain com 除一个位置外将受到保护 http ci my d
  • 动态创建的 Jenkins 管道脚本

    我正在使用詹金斯管道项目 在脚本中我想写parallel以动态方式阻止 因为节点数量可以改变 例如 从此 parallel node1 node stage1 stage2 node2 node stage1 stage2 像这样的事情 f
  • 如何在每个 xargs 命令之间休眠 1 秒?

    例如 如果我执行 ps aux awk print 1 xargs I echo 我想让 shell 在每次之间休眠 1 秒echo 如何更改我的 shell 命令 您可以使用以下语法 ps aux awk print 1 xargs I
  • c - 后台运行的程序的退出状态

    我有一个任务 其中我必须创建一个迷你 shell 它能够执行很多操作 包括作业控制 我设法使用 fork 和 execvp 创建新的工作 但我还想获取 execvp 运行的程序的退出代码 根据我从其他帖子中查找到的内容 我可以使用以下方法来
  • shell脚本响应按键

    我有一个 shell 脚本 本质上是这样的 while true do read r input if input a then echo hello world fi done 这一切都很好 但我刚刚意识到在这种情况下必须按 ENTER
  • 如何在 shell 中解码 URL 编码的字符串?

    我有一个文件 其中包含已编码的用户代理列表 例如 Mozilla 2F5 0 20 28Macintosh 3B 20U 3B 20Intel 20Mac 20OS 20X 2010 6 3B 20en 我想要一个 shell 脚本 它可以
  • VBA:如何从 MS Access 运行另一个应用程序

    我一直在试图解决这个问题 但似乎我在任何地方都找不到解决该问题的方法 这是第一部分 VBA Shell 命令始终返回 找不到文件 https stackoverflow com questions 10439024 vba shell co
  • Cakephp cron 作业调用控制器的操作

    几个月前我开始使用 CakePHP 1 2 为公司的应用程序添加一些小功能 但我对它不太熟悉 我们先在开发服务器上进行本地测试 然后再合并到生产服务器 我希望每小时调用一个控制器操作 通过我的研究 我认为这是最好的方法 即 cron 作业
  • 通过标记现有提交来触发 Jenkins 管道

    描述 我设置了 Jenkins 2 126 以便在推送新标签时构建管道 具体来说 我想将现有提交标记为master as release 3并让它触发构建 根据多个消息来源 我想要的是可能的 https mohamicorp atlassi
  • 如何从 JobDSL 脚本中访问 Jenkins 作业参数列表?

    我想保存传递到 JobDSL 作业的参数 我知道我可以引用各个参数 但我想让代码通用 我如何访问传递给作业的参数列表 当前的代码看起来像这样 final jobParameters new File parameters jobParame
  • 使用列命令时出现 Bash 错误:“列:行太长”

    当我使用输入文件键入此列命令时 出现以下错误 column t text txt gt output column line too long column line too long column line too long column
  • 运行“read PATH”后出现“ls:未找到”

    我正在尝试编写一个小脚本来列出给定变量中的目录 然而我却跑不了ls在读取我对变量的输入之后PATH system bin sh echo enter directory for listing read PATH ls PATH R gt
  • 如何检测awk中END之前的最后一行

    我正在尝试将最后一行添加到我正在创建的文件中 awk 之前如何检测文件的最后一行END 我需要这样做 因为变量在END堵塞 所以我试图避免使用END awk do some things add a new last line into f
  • bash shell 嵌套 for 循环

    我想编写一个必须在 bash shell 提示符下工作的嵌套 for 循环 在单行命令中嵌套 for 循环 例如 for i in a b do echo i done a b 在上面的例子中 for循环是在单行命令中执行的 像这样 我在
  • 使用 os.system() 或 subprocess.call() 运行 sed 命令使 csv 文件不带分隔符

    我正在运行一个 Python 脚本 该脚本从 Postgres 数据库中转储 CSV 然后我想在所有这些文件中转义双引号 所以我使用 sed 来做到这一点 在我的Python代码中 sed for quotes sed i s g home

随机推荐

  • 使用 VB .Net 和 UI Automation 从 Google Chrome 中所有打开的选项卡获取 url

    您好 我有这段代码可以获取 Chrome 上的当前 url 但只能获取活动选项卡 url 我需要使用 UI 自动化从所有打开的选项卡获取 url 我的工作代码 Function GetChromeUrl ByVal proc As Proc
  • R 文本挖掘 - 处理复数

    我正在学习 R 中的文本挖掘 并且取得了相当大的成功 但我对如何处理复数感到困惑 即我希望 nation 和 nations 被算作同一个词 理想情况下 dictionary 和 dictionaries 被算作同一个词 x lt nati
  • 对多个后端服务的 Azure AD 用户进行身份验证

    我正在尝试找到一种授权 Web 客户端的策略 该客户端对 Azure 中托管的两项服务进行 HTTP 调用 Web 客户端都是客户端 两个 API 服务是托管在 Azure 中的 Azure Functions 对于上述三个应用程序中的每一
  • UIWindow 中的多个视图

    我有一个 基于导航的应用程序 它还需要始终在屏幕底部显示一个视图 添加 UINavigationController 的视图后 我将这个新视图添加到 UIWindow 中 In my delegate s applicationDidFin
  • 设置链接数据库 (MS Access) 路径而不访问链接数据库

    我的 Access 系统由两部分组成 一个包含表单 报告和宏的 前端 mdb 文件 以及一个包含数据的后端 mdb 文件 前端 MDB 文件的副本存储在每台计算机上 后端文件位于 server share backend mdb 前端MDB
  • 使用 Robospice 和 Android Studio 出现 Commons-Io 重复条目错误

    我已经研究以下问题几个小时了 但还没有想出解决我的问题的方法 我已经尝试了 Stack Overflow 上的以下修复 Android Studio 更新至 1 0 损坏 MultiDex and Gradle 插件 v0 13 1 后重复
  • 计算给定数字在排序集中的索引

    不确定这个问题应该在 Math Overflow 上还是在这里 所以首先在这里尝试 假设我们有一个包含 N 个 1 和 M 个 0 的数字 有 M N M N 个不同的这样的数字 可以在可数集合中排序 例如 包含 2 个 1 和 3 个 0
  • RootViewController动画过渡,初始方向错误

    所以我遵循了这个线程 RootViewController 切换过渡动画将 window rootViewController 从 A 转移到 B 再到 C 代码如下所示 UIView transitionWithView self win
  • 斯坦福计算器应用程序不断崩溃

    我正在斯坦福大学使用 Swift 在线学习斯坦福大学 iPad 和 iPhone 开发人员课程 并致力于创建一个计算器应用程序 对于编程还是有点陌生 但是 每当我从计算器中选择运算符时 它就会不断崩溃并显示错误消息 operandStack
  • IE 的 css 'pointer-events' 属性替代方案

    我有一个下拉导航菜单 其中某些标题在单击时不应导航到其他页面 这些标题在单击时打开下拉菜单 而其他标题则应导航 这些标题没有下拉菜单并直接导航 但是 两者类型有href给他们定义的 为了解决这个问题 我为前一种类型的标题添加了以下 css
  • Vue:不同页面之间共享数据

    var app new Vue el app data sharedData methods goToPageB function if some condition is met window location href pageB ht
  • 在 Laravel 中编码,在 Python 中解码

    我正在使用 Laravel 的加密字符串加密我网站上的一些数据的方法 它使用 OpenSSL 的 256 位 AES CBC 加密 无需任何序列化 我现在正尝试在 Python 中解密该数据 但我不断收到有关密钥长度的错误 并且似乎无法弄清
  • 仅当浏览器高度比页面短时,如何使用jquery显示“返回顶部”按钮?

    如何在底部添加 显示 返回顶部 按钮div使用jqueryonly ifheight 浏览器高度比页面高度短 否则应该隐藏 p a href mainwrapper Back to top a p to this div p Paragra
  • 在 php 中使用 PDO 类获取 num_rows 时出现问题

    我刚刚更改了数据库连接 我还不习惯 PDO 类或 OOP 无论如何 我像这样连接到数据库 dsn mysql host DB HOST dbname DB NAME try this gt db new PDO dsn DB USER DB
  • 正则表达式从多语言字符串中过滤除白名单之外的所有字符

    我正在尝试清理来自多语言网站上的搜索框的字符串 通常我会使用正则表达式 例如 allowed w s txt search preg replace allowed allowed iu 1 GET txt search 这对于英文文本来说
  • 如何以编程方式停止当前网站? [复制]

    这个问题在这里已经有答案了 我正在将 MVC 5 用于 Web 应用程序 Web 应用程序在 IIS 7 或更高版本中运行 在 Global asax 上application start 将设置许可证数量 protected void A
  • 中断accept()

    是否有操作系统可移植的方法来中断阻塞accept 我有一个多线程守护程序 服务 当守护程序 服务收到关闭信号时 需要优雅地关闭所有侦听网络主机 我看到有人说你应该使用非阻塞套接字或选择超时 但这些不会降低性能 因为我的应用程序应该尽可能快
  • Android - 使用 parse 和 pubnub 在随机聊天应用程序中正确配对和连接两个用户

    我目前正在创建一个随机聊天应用程序 用户按下按钮并与另一个用户配对 然后他们就可以聊天 我计划使用 Parse 进行用户控制和文件存储 使用 pubnub 进行聊天 我的问题是 配对和连接两个用户并将他们放在一起聊天的正确方法是什么 假设
  • 根据部分 id 列表过滤 HtmlElements 列表

    我有一个 HtmlElementCollection 我想使用 Linq 获取其 id 包含另一个列表中的 id 的 HtmlElements 列表 所以我尝试了一些方法 但都没有成功 我从集合中获取一个列表并尝试对其进行过滤 这是部分 i
  • 在 Jenkins 管道 shell 中运行嵌套命令

    我想在 Jenkins 管道中运行嵌套 shell 命令 例如如下所示 docker stop docker ps aq 不幸的是 当我将其格式化为管道语法时 sh docker stop docker ps aq 詹金斯似乎没有正确运行它