我有一个 Jenkins 项目,其中有一个“执行 shell”,它执行一些 bash 命令并将一个变量导出到 env。变量:
#!/bin/bash
...
TARGET_FULLPATH="blablabla"
export TARGET_FULLPATH
此外,我还配置了“构建后操作”:
- “在其他项目上触发参数化构建”
- “当前构建参数”
- “预定义参数”-> 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)环境变量”步骤以加载属性文件:
2/对于演示,我添加了一个“构建后任务”步骤来读取变量
3/这是控制台输出,有效:)
关于bash - 无法将变量从 Jenkins 中的执行 shell 导出到其他项目(使用属性文件),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30938936/