@CheckForNull private synchronized EnvVars getParameterEnvVars() { final Run<?, ?> run = getOwner(); if (resolvedParameterEnvVars == null && run instanceof AbstractBuild<?, ?>) { AbstractBuild<?, ?> build = (AbstractBuild<?, ?>)run; EnvVars resolvedParameters = new EnvVars(); List<ParametersAction> actions = build.getActions(ParametersAction.class); for (ParametersAction params : actions) { params.buildEnvVars(build, resolvedParameters); } resolvedParameterEnvVars = resolvedParameters; } return resolvedParameterEnvVars; }
@Override public boolean perform(AbstractBuild<?, ?> build, Launcher launcher, BuildListener listener) throws InterruptedException, IOException { EnvVars vars = new EnvVars(); ParametersAction parametersAction = build.getAction(ParametersAction.class); if (parametersAction != null) { parametersAction.buildEnvVars(build, vars); } else { listener.error("Build was scheduled without parameters!"); return false; } for (Map.Entry<String, String> entry : vars.entrySet()) { listener.getLogger().println(entry.getKey() + "=" + entry.getValue()); } return true; }
private static void addEnvironmentContributingActionsValues(EnvVars env, AbstractBuild b) { List<? extends Action> buildActions = b.getAllActions(); if (buildActions != null) { for (Action action : buildActions) { // most importantly, ParametersAction will be processed here (for parameterized builds) if (action instanceof ParametersAction) { ParametersAction envAction = (ParametersAction) action; envAction.buildEnvVars(b, env); } } } // Use the default parameter values (if any) instead of the ones from the last build ParametersDefinitionProperty paramDefProp = (ParametersDefinitionProperty) b.getProject().getProperty(ParametersDefinitionProperty.class); if (paramDefProp != null) { for(ParameterDefinition paramDefinition : paramDefProp.getParameterDefinitions()) { ParameterValue defaultValue = paramDefinition.getDefaultParameterValue(); if (defaultValue != null) { defaultValue.buildEnvironment(b, env); } } } }