How do you split mvn reactor into Bamboo jobs so groups of module build by different jobs?

Peter Kahn
Rising Star
Rising Star
Rising Stars are recognized for providing high-quality answers to other users. Rising Stars receive a certificate of achievement and are on the path to becoming Community Leaders.
November 25, 2014

To make the most out of bamboo's stagesand jobs I want to
a) split maven lifecycle phases across bamboo stages (Build -> Test -> Deploy)
b) split each stage into parallel jobs

I know how to split phases and stages:
BUILD:  mvn clean install -DskipTests
TESTS:   mvn surefire:test failsafe:test
DEPLOY:  mvn clean deploy -DskipTests    (rebuild - yick)

I don't know how to split across jobs.  I'd like something that allowed me to run maven with multiple threads to determine which projects should be in each thread or job so I could construct the command line for each thread.

mvn do-thing -T4
Generates cmdline1.XML thru 4.XML
Jobs 1thru 4 invoke mvn using the XML to extract proper cmdline

Do you know of a plugin or cmdline option for this?

 

Thanks

 

Peter

2 answers

0 votes
Peter Kahn
Rising Star
Rising Star
Rising Stars are recognized for providing high-quality answers to other users. Rising Stars receive a certificate of achievement and are on the path to becoming Community Leaders.
December 2, 2014

Bamboo cannot automatically do this, but I swear I saw a talk of the JIRA build team where they created an elastic build.  I'll need to dig deeper on that.  I created a feature request for now and will need to play around with running mvn validate -T4 to see if I can transform this into lists of "-pl group:artifact" statements which I could feed to identical jobs for execution.

 

https://jira.atlassian.com/browse/BAM-15312

0 votes
Krystian Brazulewicz
Atlassian Team
Atlassian Team members are employees working across the company in a wide variety of roles.
November 26, 2014

I think you're requesting impossible. Some limitations I can see:

  • surefire:test failsafe:test will also run compile:compile so I don't see a point in a separate job that will only do the building (unless you want to test if it compiles)
  • you can achieve some level of separation by using maven profiles and use TESTA job to run mvn test -Pprofile_test_a, TESTB job to run mvn test -Pprofile_test_b, etc

If you want to emulate some kind of dynamic job configuration you can emulate it using 2 script tasks. First of them would generate a script for another script task to run

I think you can also use surefire's/failsafe's allow you to run tests in multiple threads

 

Suggest an answer

Log in or Sign up to answer
TAGS
AUG Leaders

Atlassian Community Events