Hello,
How can I access set a variable in a TaskType class, and access it in a ContextProvider?
I've tried to set the variable like this in the TaskType:
public class CustomTask implements TaskType { private CustomVariableContext customVariableContext; public void setCustomVariableContext(CustomVariableContext customVariableContext) { this.customVariableContext = customVariableContext; } @NotNull @Override public TaskResult execute(@NotNull TaskContext taskContext) throws TaskException { VariableContext planVariables = taskContext.getCommonContext().getVariableContext(); planVariables.addLocalVariable("variable","variable"); customVariableContext.addCustomData("variable","variable"); return TaskResultBuilder.newBuilder(taskContext).success().build(); } }
But I can't seem to access the variable in my ContextProvider:
public class CustomProvider implements ContextProvider { private final VariableDefinitionManager variableDefinitionManager; public CustomProvider(VariableDefinitionManager variableDefinitionManager) { this.variableDefinitionManager = variableDefinitionManager; } @Override public Map<String, Object> getContextMap(Map<String, Object> context) { final ChainResultsSummaryImpl planSummary = (ChainResultsSummaryImpl) context.get("resultSummary"); for (ImmutableJob job : plan.getAllJobs()) { for (TaskDefinition task : job.getBuildDefinition().getTaskDefinitions()) { HashMap<String, String> variables = task.getConfiguration(); } } variableDefinitionManager.getPlanVariables(plan); } }
Cédric Cousseran
Community moderators have prevented the ability to post new answers.
I've found the solution.
In the TaskType class:
public class CustomTaskType extends TaksType { @NotNull @Override public TaskResult execute(@NotNull TaskContext taskContext) throws TaskException { taskContext.getBuildContext().getBuildResult().getCustomBuildData().put("variable","variable"); return TaskResultBuilder.newBuilder(taskContext).success().build(); } }
In the ContextProvider class:
public class CustomProvider implements ContextProvider { @Override public Map<String, Object> getContextMap(Map<String, Object> context) { final ChainResultsSummaryImpl planSummary = (ChainResultsSummaryImpl) context.get("resultSummary"); List<ChainStageResult> resultList = planSummary.getStageResults(); for (ChainStageResult chainResult:resultList){ Set<BuildResultsSummary> resultSet = chainResult.getBuildResults(); for (BuildResultsSummary summary : resultSet) { Map<String,String> customBuildData = summary.getCustomBuildData(); if (customBuildData.get("variable") != null) { context.put("variable", "variable"); } } } } }
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.