I need to perform multiple executions of an external process within the same Bamboo task. I've written plugins using code similar to the below. If I want to execute multiple external processes, is there a way to combine the results that each process returns? Does anyone know of any plugins that currently do anything similar to this?
public TaskResult execute(final TaskContext taskContext) throws TaskException {
TaskResultBuilder builder = TaskResultBuilder.create(taskContext);
ExternalProcess process = processService.createProcess(taskContext,
new ExternalProcessBuilder()
.command(Arrays.asList("/bin/ls"))
.workingDirectory(taskContext.getWorkingDirectory()));
process.execute();
// TODO -- need to execute second process
// TODO -- need to check the results of both processes
return builder.checkReturnCode(process, 0).build();
}
I looks like you can check the TaskState of the TaskResultBuilder between ExternalProcess executions. There are probably more elegant ways to do this, but the following code snippet achieves what I was looking for.
builder = builder.checkReturnCode(process, 0);
if(builder.getTaskState() == TaskState.ERROR){
buildLogger.addErrorLogEntry("Task state == error. Bombing out...");
return builder.build();
} else if(builder.getTaskState() == TaskState.FAILED){
buildLogger.addErrorLogEntry("Task state == failed. Bombing out...");
return builder.build();
} else {
buildLogger.addBuildLogEntry("Process succeeded. Do something else.");
}
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.