Modify Bamboo inline scripts directly in the database

Xabier Davila October 22, 2014

I know this is not supported, but since Bamboo lack of templates, I'm sure someone else has already tried this.

In my case I have a large number of plans that have been created by cloning a master "template". Now I need to do a minor adjustment in some of the inline scripts of these plans. I know inline scripts are not a "good practice", but the inline scripts are basically something like this:

python27 myPythonScript.py -a A -b B

and now I need to add more parameter to this call.

The below SQL query returns the XML definition for the job (Bamboo 5.6.0):

SELECT xml_definition_data
FROM build_definition
INNER JOIN build
ON build_definition.build_id = build.build_id
WHERE build.full_key='FULL-JOB-KEY';

So my idea is to update the corresponding bit in the XML:

<buildTasks>
    <taskDefinition>
		...
    </taskDefinition>
	...
    <taskDefinition>
		...
        <item>
          <key>scriptBody</key>
          <value>python MyPythonScript.py -a A -b B</value>
		  ...
        </item>
        ...
    </taskDefinition>
  </buildTasks>

I think you get the idea.

 

My question is, am I going to break something else by doing this change directly in the DB? I have already tried it and it seems to work, but not entirely sure if I'm breaking something I'm not aware of when doing this.

BTW, I seem to have to restart Bamboo after modifying the DB so the new values are picked up. Is that possible?

 

If anyone has tried it, feedback will be welcome wink

1 answer

1 accepted

0 votes
Answer accepted
Przemek Bruski
Atlassian Team
Atlassian Team members are employees working across the company in a wide variety of roles.
October 22, 2014

You'll not going to break anything if you're careful.

The only problem is caching, you'll need to restart Bamboo or trigger cache invalidation using com.atlassian.bamboo.plan.cache.ImmutablePlanCacheService.

Xabier Davila October 23, 2014

Is there any way to trigger the cache invalidation from REST? If not, how would you suggest to do it?

Przemek Bruski
Atlassian Team
Atlassian Team members are employees working across the company in a wide variety of roles.
October 23, 2014

No, can't be done via REST, you'd need to write a plugin to do it. It's probably easier to just restart the server.

Suggest an answer

Log in or Sign up to answer
TAGS
AUG Leaders

Atlassian Community Events