在调用的构建流程工作中,我尝试了两种方法:
build.environment['AOEU'] = 'aoeu' // callee would `println called.environment['AOEU']`
和
upstream.environment['AOEU'] = 'aoeu' // callee would `println build.environment['AOEU']`
没有运气。
答案 0 :(得分:3)
我也经常与之斗争,并没有找到干净的方法。我终于以一种丑陋的方式使用<?php
//if the name field is filled in
if(isset($_POST['fname'])) {
$name=$_POST['fname'];
$sex=$_POST['sex'];
printf("hello %s, you are a %s",$name,$sex);
}
?>
来做到这一点。
EnvInjectPlugin
...... EnvInject插件做了神奇的
我首先尝试实施EnvironmentContributingAction
并将其添加为def buildEnv = build.getEnvVars();
varsToAdd = [:]
// add here your custom properties
buildEnv.putAll(varsToAdd)
import org.jenkinsci.plugins.envinject.EnvInjectPluginAction
def envInjectAction = build.getAction(EnvInjectPluginAction.class);
envInjectAction.overrideAll(buildEnv)
,但由于未知原因不适合我。
务必设置&#39; Flow run需要一个工作区&#39;在被叫工作中。
答案 1 :(得分:1)
答案 2 :(得分:1)
基于迈克尔解决方案的简单版本
import hudson.model.*
def setEnvVariable(final String key, final String value) {
Thread.currentThread().getCurrentExecutable()
.addAction(new ParametersAction(new StringParameterValue(key, value))
);
}
setEnvVariable("THIS_ENV_VAR", "Hello World")
然后在构建后的操作中可以使用该变量。
答案 3 :(得分:0)
我知道一个老问题,但这就是我如何解决它。美丽的部分是这个代码适用于Jenkins,在系统评估groovy和Build FLow Job DSL中。
从System Groovy作业/控制台运行它时,只需删除import语句,因为它们已经可用。
作为奖励,无论Groovy上下文如何,此类还有助于获取环境变量。仍然在构建流程中你应该支持build.environment.get
它更自然。
注意:应该检查'流程运行需要工作空间'。
//Import the required bindings for a Build Flow DSL
import hudson.model.AbstractBuild
import hudson.model.EnvironmentContributingAction
import hudson.EnvVars
//Drop the above if running with a System Groovy Console/Job
class Job {
static def getVariable(String key) {
def config = new HashMap()
def thr = Thread.currentThread()
def build = thr?.getCurrentExecutable()
def envVarsMap = build.parent.builds[0].properties.get("envVars")
config.putAll(envVarsMap)
return config.get(key)
}
static def setVariable(String key, String value) {
def build = Thread.currentThread().getCurrentExecutable()
def action = new VariableInjectionAction(key, value)
build.addAction(action)
build.getEnvironment()
}
static def setVariable(String key, Integer value) {
setVariable(key, value.toString())
}
}
class VariableInjectionAction implements EnvironmentContributingAction {
private String key
private String value
public VariableInjectionAction(String key, String value) {
this.key = key
this.value = value
}
public void buildEnvVars(AbstractBuild build, EnvVars envVars) {
if (envVars != null && key != null && value != null) {
envVars.put(key, value);
}
}
public String getDisplayName() { return "VariableInjectionAction"; }
public String getIconFileName() { return null; }
public String getUrlName() { return null; }
}
Job.setVariable("THIS_ENV_VAR", "Hello World")
将环境变量THIS_ENV_VAR设置为“Hello World”