linux – 在jenkins管道作业中将变量传递给bash脚本
我有一个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}返回一个空字符串! #!/bin/sh 但它没有帮助.那么如何在Jenkins管道脚本中将参数传递给我的bash脚本呢? 更新: sh "bash -c " source /opt/setup.sh ${lib_arch}"" 解决方法
以下示例有效:
void updateApplicationVersionMaven(String version) { sh "mvn -B versions:set -DnewVersion=$version" } 一个完整的管道脚本(在Jenkins 2.7.3上测试): node { stage('test') { def testVar='foo' sh "echo $testVar" } } 编辑(评论后):啊,测试了一些,可以重现这个问题.这是因为您使用“./opt/setup.sh”获取脚本.这会影响shell环境,在这种情况下会破坏Jenkins变量注入.有趣. EDIT2(评论后):我认为这是正在使用的默认shell的问题(由Jenkins或OS). def testVar='foo3' sh "bash -c ". /var/jenkins_home/test.sh $testVar && echo $ARCH"" 最后一个echo现在回显了testVar的内容,它作为参数传递给脚本,随后由脚本设置为环境变量. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- Linux目录结构
- linux – 是否有可能拥有100%安全的虚拟专用服务器?
- Linux就该这么学第1章 部署虚拟环境安装linux系统。
- tmux:如何自动打开会话,窗口和窗格
- LINUX教学:Ubuntu 16.04编译安装Android 7.1.2
- zookeeper可以查看进程启动,但是状态显示报错:Error cont
- WaitForMultipleObjects()和WSAEnumNetworkEvents()的等效l
- linux – 在Docker容器中挂载SMB / CIFS共享
- 嵌入式Linux的简单C/C++ FTP和SFTP客户端库推荐
- linux – Crontab在特定时间的每一分钟