bash - 无法将变量从 Jenkins 中的执行 shell 导出到其他项目(使用属性文件)

标签 bash shell jenkins

我有一个 Jenkins 项目,其中有一个“执行 shell”,它执行一些 bash 命令并将一个变量导出到 env。变量:

#!/bin/bash

...
TARGET_FULLPATH="blablabla"
export TARGET_FULLPATH

此外,我还配置了“构建后操作”:

  1. “在其他项目上触发参数化构建”
  2. “当前构建参数”
  3. “预定义参数”-> FULLPATH=$TARGET_FULLPATH

但是,当我运行这个项目时,另一个将在第一个项目完成后立即启动的项目似乎根本没有获得参数 FULLPATH!

至少在(第二个项目的)“Execute shell”中,bash 脚本不会为 echo $FULLPATH 打印任何内容!同样在第二个项目的“环境变量”中,不包括 FULLPATH!

知道我做错了什么吗?

还有一件事,我不能使用属性文件来存储参数,因为这两个项目在不同的服务器上运行,并且在这些服务器之间复制文件有限制!

最佳答案

您看过这个解决方案吗? Jenkins: How to use a variable from a pre-build shell in the Maven "Goals and options"

使用 shell 预构建步骤 + InjectEnv plugin ,您应该能够解决您的问题。

6 月 22 日更新,我添加了一些屏幕副本。

1/添加第一个“执行 shell”脚本以创建属性文件和一个“注入(inject)环境变量”步骤以加载属性文件:

enter image description here

2/对于演示,我添加了一个“构建后任务”步骤来读取变量

enter image description here

3/这是控制台输出,有效:)

enter image description here

关于bash - 无法将变量从 Jenkins 中的执行 shell 导出到其他项目(使用属性文件),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30938936/

相关文章:

linux - 在 shell 中递归地从备份文件恢复

maven - 放置大型测试数据集的最佳实践?

linux - 通过交换文本重命名文件

bash - 如何强制 Git for Windows 的 bash-shell 不将路径字符串转换为 Windows 路径?

c++ - 如何使usb端口静态?

bash - 在哪里查看 Bash 内置命令的手册页?

java - Unity Jenkins Android Gradle Task :mergeReleaseResources FAILED, 命令行工作正常

ios - xcodebuild 中的开发人员门户 ID

bash - 在 Bash 中创建互斥锁时,我应该使用 `flock` 还是 `mkdir` ?

linux - if 结构什么时候不需要括号?