如何将 Shell 变量值访问到 Groovy 管道脚本中

2024-01-06

现在我是 Shell、Jenkins、Groovy pipeline 的新手。我的要求是我正在将文件文本读取到 shell 脚本下的变量中,并且我需要将该变量值从 shell 脚本中传递出来并在 Groovy 脚本中使用。

这是我的代码:

stages
    {
        stage('example')
        
        {
            steps
            {
                script
                {
                    
                sh'''
                    #!/bin/bash
                    set +x                  
                    readVal=$(<$WORKSPACE/test.json)
                    echo "$readVal"        //this is priting my entire json successfully                  
                    
                  echo 'closing shell script'
                    
                ''' 
                    
                    
                    println WORKSPACE    /// this is printing my workspace value successfully 
                    
                    println readVal     // not working 
                    println env.readVal     // not working 
                    println $readVal     // not working 

                
                }
            }
        }
    }

如何获得readVal的值脱离 shell 来访问?


See Jenkins,管道最佳实践 https://www.jenkins.io/doc/book/pipeline/pipeline-best-practices/#avoiding-complex-groovy-code-in-pipelines:

A。解决方案:不要使用[复杂的函数],而是使用 shell 步骤并返回标准输出。这个 shell 看起来像这样:

def JsonReturn = sh label: '', returnStdout: true, script: 'echo "$LOCAL_FILE"| jq "$PARSING_QUERY"'

Example

pipeline {
    agent any

    stages {
        stage('example') {
            steps {
                script {
                    def readVal = sh script: 'echo "READ_VAL_VALUE"', returnStdout: true
                    echo readVal
                    println readVal
                }
            }
        }
    }
}

控制台输出

[Pipeline] Start of Pipeline
[Pipeline] node
Running on Jenkins in C:\Users\jenkins\AppData\Local\Jenkins\.jenkins\workspace\Pipeline project
[Pipeline] {
[Pipeline] stage
[Pipeline] { (example)
[Pipeline] script
[Pipeline] {
[Pipeline] sh
+ echo READ_VAL_VALUE
[Pipeline] echo
READ_VAL_VALUE

[Pipeline] echo
READ_VAL_VALUE

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

如何将 Shell 变量值访问到 Groovy 管道脚本中 的相关文章

  • 从“stdin”读取文件后如何使用“input()”?

    Context 我想要一个简单的脚本 它可以选择多个管道输入中的一个 而不需要EOF when reading a lineUnix Linux 上的错误 它试图 接受多行管道文本 等待用户选择一个选项 将该选项打印到标准输出 所需用途 p
  • Bash 'printf' 相当于命令提示符?

    我希望在 Windows 命令提示符下将一些字符串输入通过管道传输到一个小型 C 程序 在 bash 中我可以使用 printf AAAAA x86 x08 x04 xed program 本质上 我需要一些东西来转义命令提示符中的那些十六
  • 如何替换每行中出现的所有字符串?

    我想在以下脚本中将所有出现的 用户名 替换为 但它仅替换第一次出现的情况 ls al sed s username 这就是 sed 默认情况下的工作方式吗 提前致谢 你需要g 全局 修饰符 sed s username g
  • Jenkins 多分支管道 - 在分支中配置属性?

    我们已经使用 Jenkins 多分支管道插件成功设置了构建管道 该插件在大多数情况下都运行良好 但是我们遇到了一个困扰我们的问题 Jenkinsfile包含一组属性 这些属性也显示在 UI 中 但如何为各个分支设置默认值 这就是我们的属性定
  • 如何从 C 文件更改终端中的目录

    如何从 C 程序更改将在终端上生效的目录 实际上不要告诉 system 函数或 chdir 函数 这些仅适用于 C 中的进程或子 shell 假设我正在从 bash shell 执行一个 C 程序 其进程 ID 为 10223 那么 我可以
  • 如何摆脱每个新终端会话上运行的某些内容?

    我正在使用狮子 我在每个新的终端会话上都会输出一个错误 bash rvm add to path command not found 这是一个几乎全新的用户帐户 RVM 安装在计算机上的另一个帐户上 bashrc 和 bash profil
  • subprocess.Popen args 参数的最大长度是多少?

    我在用Popen http docs python org library subprocess html using the subprocess modulesubprocess 模块中的函数来执行命令行工具 subprocess Po
  • 在使用 Ant/Jenkins 时,如何查看同一 Java 项目的不同 Subversion 标签/分支?

    这是我的开发配置 颠覆之下 我有我的project X trunk 带有我最新的开发人员 我有我的project X tags 具有不同的版本 我正在考虑添加一个分支文件夹 我正在使用 Jenkins 使用 Ant 脚本构建我的projec
  • bash、zsh :声明 [*] (天哪)

    我正在使用具有以下语法的 bash 脚本 declare a THIS 这在 zsh 中似乎是非法的 我收到 未找到匹配项 THIS 错误 谁能帮我把它翻译成 zsh 吗 另外 什么是 语法是什么意思 我知道我们正在声明一个数组 但为什么要
  • 当我通过 shell 脚本创建 .txt 文件时,为什么文件名末尾出现问号? [复制]

    这个问题在这里已经有答案了 我正在编写一个 shell 脚本 我应该在其中创建 1 个文本文件 当我这样做时 文件名末尾出现一个问号 是什么原因 我正在 bash 脚本中尝试以下方法 1 grep ERROR a1 gt text txt
  • 如何“grep”连续流?

    可以用吗grep在连续的流中 我的意思是有点tail f
  • 如何在 Bash 中为数组赋值?

    我正在尝试从文本文件中读取值列表 你好 txt 并将它们存储在一个数组中 counter 0 cat hello txt while read line do Unix Array counter line let counter coun
  • Bash - 如何将参数传递给通过标准输入读取的脚本

    我正在尝试从标准输入执行脚本并将参数传递给它 有办法做到吗 假设我有以下内容 cat script sh bash 我如何将参数传递给脚本 我不想这样做 bash script sh arguments 也不是这个 script sh ar
  • 从重定向到日志文件的程序输出中删除进度条

    我正在运行一个程序 它会输出进度条 我是这样做的 python train py tee train log The train log看起来像下面这样 这是1号线 Training 这是2号线 000 valid 100 2630 263
  • Grails 操作被调用两次。帮助!

    我正在编写一个 grails 应用程序并遇到一个奇怪的问题 单击页面上的提交按钮时 关联的操作会快速连续调用两次 这会导致一切都严重破坏 以前有其他人见过这个问题吗 下面是我的代码 从普惠制页面
  • 如何使用 bash 脚本关闭所有终端,在每个终端中有效地按 Ctrl+Shift+Q

    我经常打开许多终端 其中一些正在运行重要的进程 例如服务器 而另一些则没有运行任何东西并且可以关闭 如果您按 重要 则会弹出确认提示Cntrl Shift Q在其中 如下所示 我想要一个 bash 脚本 它可以关闭所有终端 但将 重要 终端
  • 子 shell 何时继承其父 shell 环境?

    什么情况下将shell的环境传递给子shell 子 shell 始终从父 shell 获取所有变量 man bash将描述所有使用子shell的情况 主要是 command command command and command 所谓环境只
  • sed-删除不包含模式的行

    我很惊讶我在 SO 上找不到与此类似的问题 如何使用 sed 删除所有不包含特定模式的行 例如 我有这个文件 cat kitty dog giraffe panda lion tiger 我想要一个 sed 命令 当调用该命令时 它将删除所
  • 将 stdout 作为命令行 util 的文件名传递?

    我正在使用一个命令行实用程序 该实用程序需要传递文件名以将输出写入 例如 foo o output txt 它唯一写入的东西stdout是一条消息 表明它运行成功 我希望能够通过管道传输写入的所有内容output txt到另一个命令行实用程
  • 具有非阻塞读取功能的 Bash 脚本

    我想使用命名管道将一些数据发送到根进程 这是脚本 效果很好 bin sh pipe tmp ntp if p pipe then mknod m 666 pipe p fi while true do if read line lt pip

随机推荐

  • 插入 SQL VBA

    我试图选择第一个表中但不在第二个表中的记录 并使用 VBA 中的 sql 语句将它们插入到第二个表中 我已在下面启动它 但我不确定为什么它不起作用 我对 sql 相当陌生 因此我们将不胜感激 MySQL INSERT INTO Client
  • 无法将 R 中的因子转换为数字

    我试过了 i lt as numeric as character Impress i lt as numeric as character levels Impress i lt as numeric paste Impress 我总是得
  • 使用 LCDS 将不可变的 Java 类序列化为 ActionScript

    我有一个复杂的对象 该对象由 LCDS DataServices 数据管理进行管理 并使用自定义汇编程序进行创建 更新等 绝大多数对象层次结构都已正确序列化 反序列化 但在序列化不可变的 java 类时我遇到了障碍 在仅使用 java 的世
  • 使用 chrome.storage.local.set 存储数据的安全性如何

    我使用 chrome storage local set 将选项数据存储在 chrome 扩展中 这些数据的安全性如何 有权访问其存储文件的任何人都可以轻松读取它吗 它不安全 并且根据 chrome storage 官方文档 https d
  • 悬停标题文本和背景的本机/默认颜色

    在 chrome firefox 中 将鼠标悬停在元素上会显示其标题 标题为黄色背景和黑色文本 有谁知道exact每种颜色都是十六进制还是 RGB 谢谢 蒂姆 拍摄屏幕截图 在 Photoshop 中打开它 使用颜色选择器查找值 在 OSX
  • C++ Protobuf 添加已分配的重复数字字段

    我有一条简单的消息 其中包含大量重复的数字字段 syntax proto3 option cc enable arenas true message bigData repeated double info 1 在运行时 数据到达时已经分配
  • 如何绘制不断变化的图形

    以前没有这样做过 除了在java中 https stackoverflow com questions 3742731 java how to draw constantly changing graphics 看看怎么样史蒂夫 麦克劳德
  • 当有预定义高度时如何将文本放置在底部!

    这应该是非常微不足道的事情 但事实并非如此 我有一个预定义的锚点高度 我想将文本放置在底部 li a class my text My Text a li 我使用了以下 CSS 但不起作用 文本仍然显示在顶部 a my text backg
  • 在scale_y_log10变换后,背景填充(通过geom_rect)被删除

    我想向使用分组数据 因子 x 轴 和对数刻度 y 轴创建的绘图添加背景填充 添加对数刻度后 背景填充将被删除 这是一个错误 还是我做错了什么 可重现的示例数据 我将使用mtcars数据 但随着cyl变量作为因子 这是模仿我的数据的最简单的数
  • 管理用户项目权限

    我刚刚创建了一个 Visual Studio Online 帐户并添加了一个新用户 如何管理该用户的项目权限 当我以管理员身份登录时 我浏览了每个可用页面 但找不到任何内容 我唯一能做的就是将用户添加为新项目的成员 添加了新用户 添加用户作
  • Maven 不同分支版本控制的最佳实践 [开发、质量保证/预发布]

    我有几个在不同分支上开发和发布的项目 即发展 and release 这个过程运行得很好 但不幸的是它有一些缺点 我一直想知道是否有更好的版本控制方案适用于我的情况 主要开发发生在开发分支上 即 Subversiontrunk但这并不重要
  • 如何引用同名的不同程序集?

    我有 2 个具有相同名称的不同程序集 需要添加到我的项目中 当我尝试将两个引用添加到项目时 Visual Studio 告诉我该程序集已被引用 因为已经存在同名的程序集 我尝试重命名其中一个文件 我可以添加两个引用 但是当从重命名的程序集访
  • 如何使用上一个命令的参数?

    I know that Esc gives you the last argument of the last command 但我对最后一个命令的第一个参数感兴趣 有按键绑定可以做到这一点吗 在同一行中 是否有一种通用方法可以从最后一个命
  • 命名空间“AuntieDot”中不存在类型或命名空间名称“Core”

    我有 4 个 PCL 它们都针对相同的框架 点阿姨 阿姨Dot 身份验证 阿姨点 核心 阿姨点模型 但由于某种原因 在 AuntieDot Authentication 命名空间中使用 AuntieDot Core Helpers 尽管 A
  • 如何从页面左右滑动模态窗口

    我希望隐藏两个模式窗口 并将它们切换为从左侧滑入 另一个从右侧滑入 然而 在我创建的小提琴中 左侧和右侧模态窗口与页面的左侧和右侧正确对齐 左侧模态从右侧滑入 而不是从左边距 滑出 在这里小提琴 https jsfiddle net Big
  • 如何在python中获取sqlsoup中模式的列名?

    如何使用Python中的SQLSOUP从模式 表中获取字典中的列名和类型 使用MySQLDB 我可以创建游标并使用cursor description sqlsoup 有类似的东西吗 根据文档 https sqlalchemy readth
  • 您可以更改 GitLab 管道中的代码吗?

    GitLab CI CD 管道是否可以提交代码更改 我想运行一个使用的阶段black https github com psf black每当我推动工作时自动格式化我的代码 gitlab ci yml image python 3 6 st
  • 有没有办法自动避免进入 Visual Studio 中的某些函数?

    我知道 仅启用我的代码 调试选项 但这仅适用于托管代码 我正在寻找一种无需单步执行函数调用的方法 例如 STL 字符串转换运算符 因为函数参数之一中存在从 char 到字符串的隐式转换 我找到了这个博客条目 http blogs msdn
  • 远程服务器上的 Django 教程:如何在我的浏览器中查看?

    我正在开始学习 Django 教程 但遇到了障碍 在我常用的域上创建了示例 mysite 后 我希望能够在我的浏览器中显示它 该教程向我指出http 127 0 0 1 8000 http 127 0 0 1 8000 但是 这是行不通的
  • 如何将 Shell 变量值访问到 Groovy 管道脚本中

    现在我是 Shell Jenkins Groovy pipeline 的新手 我的要求是我正在将文件文本读取到 shell 脚本下的变量中 并且我需要将该变量值从 shell 脚本中传递出来并在 Groovy 脚本中使用 这是我的代码 st