How to run next job/stage in case previous one Failed ONLY?

Viktoriia Mishchanyn August 4, 2023

I need to add mvn rollback stage in case the previous stage is Failed ONLY. It should not run in case previous jobs are successful. Can be between tasks as well

 

I was wondering if is there a bamboo variable I can use to add as a condition for with failed/passed value? and how can I correctly add this? 

1 answer

3 votes
Charlie Misonne
Community Leader
Community Leader
Community Leaders are connectors, ambassadors, and mentors. On the online community, they serve as thought leaders, product experts, and moderators.
August 4, 2023

Hi @Viktoriia Mishchanyn 

The easiest way would be to put your mvn commands in a shell script and handle the failed logic in there.
You can easily catch the exit code of the mvn command and if it is a failure code you proceed with the mvn rollback.

If you want to build this with separate Bamboo stages/ tasks:

When the stage fails and becomes red in Bamboo it will not run any other stages or tasks afterwards except for the final stage.
So you need to mark the stage where you do the mvn rollback as final.

In the final stage you'll need a way to know if the previous stage was successful.
For that you'll have to catch the exit code of you intitial mvn command and store it as a Bamboo variable. Bamboo is not great at sharing variables between stages but here is a way: Inject Bamboo variables task 

In the final stage you can use a condition on the task where you execute mvn rollback where you check for the injected variable value

Viktoriia Mishchanyn August 8, 2023

Hi @Charlie Misonne , 

Thank you very much for your response!

I would appreciate it if you could share more details as I still have difficulties resolving my problem.


Regarding the first solution (put your mvn commands in a shell script):
1) how do I know the agent host which I need to add to sshtask as a host? (the one that my bamboo plan currently using)
2) directory from which to run my mvn commands would be ${bamboo.build.working.directory}? 

Regarding the second solution:

1) where do I get the first mvn task results from? 
I was trying to add release:clean release:prepare release:perform --batch-mode > ${bamboo.build.working.directory}/build.log 2>&1 but couldn`t find the log file anywhere later

2) or should I use Use Maven return code option to get the mvn task result? 

Viktoriia Mishchanyn August 10, 2023

Hi All, 

I finally made the first solution work. Here are the tips who those who will step into the same problems: 

1) ${bamboo.capability.HOSTNAME} - variable to get your agent host

2) Simple of SSH command to run mvn which I took from bamboo logs while try to run as a mvn task:
<my/mvn/location/.../apache-maven-3.2.5/bin/mvn> -Djava.io.tmpdir=/tmp/<my-bamboo-plan_number> release:clean release:prepare release:perform --batch-mode

3) also needed to add export java as it couldn`t find java_home

My final version of the script:

# Navigate to the project directory
cd ${bamboo.build.working.directory}

export JAVA_HOME=<..java64/openjdk17.0.4.1>

# Log in to private docker register
docker login -u <username> <private_register> -p <password>
# Execute the Maven release process
<my/mvn/location/.../apache-maven-3.2.5/bin/mvn> -Djava.io.tmpdir=/tmp/<my-bamboo-plan_number> release:clean release:prepare release:perform --batch-mode

# Check if the release succeeded
if [ $? -eq 0 ]; then
echo "Release was successful."
else
echo "Release failed. Performing rollback..."
<my/mvn/location/.../apache-maven-3.2.5/bin/mvn> -Djava.io.tmpdir=/tmp/<my-bamboo-plan_number> --batch-mode
#mvn release:rollback --batch-mode
echo "Rollback complete."
fi

Like Steffen Opel _Utoolity_ likes this
Viktoriia Mishchanyn August 10, 2023

Also, we found Pre-Post Build Command Runner plugin which probably will be useful for my general question however I did not try this yet.

Like Steffen Opel _Utoolity_ likes this
Charlie Misonne
Community Leader
Community Leader
Community Leaders are connectors, ambassadors, and mentors. On the online community, they serve as thought leaders, product experts, and moderators.
August 30, 2023

Hi!

I'm sorry I did not get back to your question sooner but I couldn't.

That's script is indeed what I had in mind. I'm glad you sorted it out!

While separate build tasks are easier to setup sometimes scripts are more powerful (and easier to migrate if you would ever move away from Bamboo).

Suggest an answer

Log in or Sign up to answer
TAGS
AUG Leaders

Atlassian Community Events