While setting one or two values would be moderately useful, my need is to retain a collection of application and environment data generated during Task execution and used by future Tasks. Eg. I generate a security key in Task 8 and then need to use that key in all future Tasks. In the current Bamboo system I need to manage my own information store, unique to each run, outside of Bamboo.
So, how would I do this? First, the goal is to allow Bamboo to collect and manage Run specific information generated during the execution of a Bamboo Plan. This information could be retained at the end of a Run and used by the customer to record history of arbitrary information.
To achieve this you need a generic interface that allows the processes initiated by Tasks to change multiple arbitrary application specific variables. Also that these variables would accumulate through the execution of the Project Execution Run.
Interface: XML via STDOUT (for example)
Write a Task plugin that expects an XML document from the action it runs. The XML could be scanned for known Global/Project variables - those variables would be set accordingly. The rest of the document would be merged into a Run specific variable called APP_RUN_XML or similar. This XML doc would accumulate the output of all Tasks during the execution of a run.
When a new Task starts, it receives the current APP_RUN_XML as input (STDIN?). Ideally the Global & Project variables would be included in this XML. The user's code can do what it likes with this data. And again, on exit the user's app would send back an XML doc.
Finally, at the end of a run, the accumulated wisdom in APP_RUN_XML would be saved as part of the Run data.
Issues: Parallel execution? An agent finishing up a Task would have to lock APP_RUN_XML during the update.
batadjanov848667898, thank you for feedback.
Resolution is marked as Answered and answer is now added to issue description.