在詹金斯管道作业中将变量传递给bash脚本

2024-06-26

我有一个 Jenkins 管道作业,其中我使用名为 setup.sh 的 bash 脚本配置我的环境,如下所示:

#!/bin/bash
export ARCH=$1
echo "architecture = " ${ARCH}

在 Jenkins 管道脚本中,我使用以下命令调用 setup.sh 脚本:

def lib_arch='linux-ubuntu-14.04-x86_64-gcc4.8.4'
sh ". /opt/setup.sh ${lib_arch}"

不幸的是,似乎NO变量被传递给 setup.sh 脚本,并且 echo ${ARCH} 返回一个空字符串! 我尝试这样做: sh "源/opt/setup.sh ${lib_arch}" 并且这也会失败并显示“未找到源”消息。 我还尝试将脚本的第一行更改为

#!/bin/sh

但这没有帮助。那么如何将参数传递给 Jenkins 管道脚本中的 bash 脚本呢? 感谢您的帮助。

更新: Bert Jan Schrijve 在此线程中建议了一种解决方法(见下文):

sh "bash -c \" source /opt/setup.sh ${lib_arch}\"" 

如果您使用带有三个撇号的多行 shell 脚本,则必须使用以下语法:

sh '''
 echo '''+varToPrint+'''
 other commands...
'''

(from https://medium.com/devopslinks/a-hacky-hackers-guide-to-hacking-together-jenkins-scripted-pipelines-part-3-aca73bd33eaa https://medium.com/devopslinks/a-hacky-hackers-guide-to-hacking-together-jenkins-scripted-pipelines-part-3-aca73bd33eaa)

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

在詹金斯管道作业中将变量传递给bash脚本 的相关文章

  • 如何排除文件/文件夹以删除[重复]

    这个问题在这里已经有答案了 如何删除文件夹中的所有内容并排除特定文件夹和文件 以 tar 为例 tar exclude folder 编辑 我可以删除文件和文件夹 注意 运行以下命令时请小心 find type f grep v NameT
  • 当我的函数名称位于字符串中时,有没有办法执行该函数[重复]

    这个问题在这里已经有答案了 考虑我有一个函数的名称 它不需要 var 中的任何参数 var fn foo 我可以像这样执行它吗 eval fn 这是行不通的 请建议 我对函数的定义如下 function foo do something 请
  • ngx_http_brotli_filter_module.so" 与 /etc/nginx/nginx.conf:1 中的二进制不兼容

    Using Nginx 1 17 3 and Nginx 1 14 0在两台独立服务器上的 Ubuntu 18 上 两者都显示相同的错误ngx http brotli filter module so is not binary compa
  • 在 Jenkins 中使用多分支管道“定期构建”

    我正在使用 Pipeline 插件运行 Jenkins 2 我已经设置了一个多分支管道项目 其中每个分支 主分支 开发分支等 的根目录中都有一个 Jenkinsfile 设置起来很简单 但是 即使代码没有更改 我也不知道如何让每个分支定期运
  • 复制稀疏文件

    我正在尝试了解 Linux UNIX 低级接口 作为练习 我想编写一个代码 将一个有漏洞的文件复制到一个新文件 同样有漏洞 所以我的问题是 如何从第一个文件读取 而不是直到第一个洞 而是直到文件的最后 如果我没错的话 read 当到达第一个
  • x = os.system(..) 的返回值[重复]

    这个问题在这里已经有答案了 当我打字时os system whoami 在Python中 作为root 它返回root 但是当我尝试将它分配给变量时x os system whoami 它将 x 的值设置为 0 为什么 os system
  • 通过标记现有提交来触发 Jenkins 管道

    描述 我设置了 Jenkins 2 126 以便在推送新标签时构建管道 具体来说 我想将现有提交标记为master as release 3并让它触发构建 根据多个消息来源 我想要的是可能的 https mohamicorp atlassi
  • 如何删除警告:link.res包含输出部分;你忘了-T吗?

    我正在使用 fpc 编译器 我想删除此警告 我已经阅读了 fpc 的选项 但我找不到如何做到这一点 这可能吗 当我运行命令时出现 fpc foo pas out 目标操作系统 Linux for i386 编译 foo pas 链接 p2
  • 连接MySQL服务器的Shell脚本

    我有大约 20 个不同的 MySQL 实例 我想轻松连接到它们 而不必每次都输入完整的地址 用户名和超长的密码 我可以做什么来编写此过程的脚本 这样我所要做的就是为每个实例运行一个 sh 脚本 到目前为止我所拥有的 保存为 instance
  • 使用列命令时出现 Bash 错误:“列:行太长”

    当我使用输入文件键入此列命令时 出现以下错误 column t text txt gt output column line too long column line too long column line too long column
  • printf 中的填充字符

    我正在编写一个 bash shell 脚本来显示进程是否正在运行 到目前为止 我得到了这个 printf 50s s n PROC NAME UP 该代码给了我这个输出 JBoss DOWN GlassFish UP verylongpro
  • 抓取每 4 个文件

    我有来自 webcan screeb 抓取器的 16 000 张 jpg 文件 我让它运行了一年 指向过去的一年 我想找到一种方法来抓取每第四张图像 以便我可以将它们放入另一个目录中 以便以后可以将它们变成电影 Linux 下是否有一个简单
  • 为什么 Ruby 中的 Dir.glob 看不到用方括号命名的文件夹中的文件?

    我有这棵树 folders foo fuu flac foo bar fuu flac foo bar fuu flac test rb 和这段代码 bin env ruby encoding utf 8 Dir glob folders
  • 按 bash 中的“最后一个”值分组

    我有一个两列的文件 1 112 1 123 2 123 2 124 2 144 3 158 4 123 4 158 5 123 我需要知道每列 1 的最后一列 2 值 1 123 2 144 3 158 4 158 5 123 如何做到这一
  • 编译JNI时出现问题

    我通过引用已使用 JNI 生成的头文件实现了以下 C 代码 include
  • 使用可加载内核模块修改帧缓冲区(/dev/graphics/fb0)参数

    Problem 我必须配置 Android 平台使用的各种 LCD 显示器 几乎在所有情况下 都没有针对感兴趣的 LCD 显示器免费提供的电气规格 但通过经验和逆向工程 可以很好地猜测参数 我正在尝试使用可加载内核模块来微调显示参数 也欢迎
  • 如何检测awk中END之前的最后一行

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

    我正在寻找完美的 Linux C 调试器 我不期望成功 但搜索应该提供丰富的信息 我是一个非常有能力的 gdb 用户 但 STL 和 Boost 很容易压垮我的调试技能 并不是说我无法深入了解数据结构的内部结构 而是它需要很长时间 我通常会
  • 过滤给定范围内的坐标

    我有数百个带有地理位置的 out 文件 我将把它们批量导入到 SQLite 数据库中 但是 为了节省时间 我只会导入地理坐标在某些间隔内的线 文件是这样的 value value longitude latitude value value
  • 构建、部署、配置和回滚所需的 Jenkins 指南,保留 5 个版本

    我对詹金斯很陌生 有一定的了解 但需要进一步的指导 我在 Git 存储库上有一个 PHP 应用程序 它使用 Composer 具有资产 具有用户上传的媒体文件 使用 Memcache Redis 具有一些代理 工作人员 并且具有迁移文件 到

随机推荐