Create
cancel
Showing results for 
Search instead for 
Did you mean: 
Sign up Log in

How to execute multiple external process from within the same Bamboo task

aaron jeffries September 14, 2015

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();
    }

1 answer

0 votes
aaron jeffries September 15, 2015

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.");
}

Suggest an answer

Log in or Sign up to answer
TAGS
AUG Leaders

Atlassian Community Events