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.