获取上游环境变量 - Jenkins 脚本化管道

Get upstream environment variables - Jenkins scripted pipeline

如何在jenkins脚本管道中获取上游环境变量?

在经历 documentation 时遇到了 getBuildCauses 和 upstreamBuilds。位谷歌搜索遇到了这些功能的一些情况

def causes = currentBuild.getBuildCauses()
def upstream = currentBuild.rawBuild.getCause(hudson.model.Cause$UpstreamCause)
def upstream = currentBuild.upstreamBuilds  

不幸的是,none 的实现从上游获取环境变量。有人可以演示打印上游环境变量的简单脚本管道示例吗?非常感谢任何帮助。

来自Javadoc of UpstreamCause

getUpstreamRun
@CheckForNull
public Run<?,?> getUpstreamRun()
Since: 1.505

这可能 return 表示 Run 的对象触发了您的 运行(它的 UpstreamCause 也是如此)。

来自Javadoc of Run

EnvVars getEnvironment()
Deprecated. 
as of 1.305 use getEnvironment(TaskListener)
-----
EnvVars getEnvironment(TaskListener listener)
Returns the map that contains environmental variables to be used 
for launching processes for this build.
-----
Map<String,String>  getEnvVars()
Deprecated. 
as of 1.292 Use getEnvironment(TaskListener) instead.

希望这可以帮助您入门。

def upStreamBuilds = currentBuild.upstreamBuilds
if (!upStreamBuilds.isEmpty()) {
  // Only immediate upstream
  Run<?,?> upstream = upStreamBuilds.get(0).getRawBuild()
  def upstreamEnvVars  = upstream.getEnvironment(TaskListener.NULL)
}