Octopus Variables set export

Hello. I have a project in octopus with variables set.
During deploy process I use shell custom script (bash).
Right now I export variables from octopus to the deployment target this way:


I do that for each variable. It works but in the future may be new variables will be added and I will have to change the script.
Is there way to export all variables at once?


No, there’s currently no way to export all Octopus variables from a bash script.

Can I ask why you wish to export all? What is your scenario?

Hi Michael, thx for your answer!
I run build configuation from Team City, push source code to Octopus and it runs integration tests.
Integration tests use a variables from Octopus. If developer will add one more variable, he will have to add it in two places: in variable set and in the script. I want to avoid it and add var just in one place.

Maybe there is a way export all variables from a python script?

Ahh, I understand. It is painful to have to update multiple places.

A few possibilities:

Option 1: An approach I have seen used is to create another variable in Octopus, which value contains the script to set the required env vars. For example, you may name the variable IntegrationTestVariables with a value of:

export Apple="#{Apple}"
export Banana="#{Banana}"

You can then simply add this one variable to your bash script, ie. #{IntegrationTestVariables}, and the export statements will be substituted in.
The downside to this is that you have to remember to add a line to this variable whenever you add a new variable which you want to export. But, at least this is all done within Octopus variables, and it also lets you control exactly which variables are exported.

Option 2: Python is an option. When using Python scripts, Octopus creates a dictionary, octopusvariables, which you could iterate over. You can see this dictionary used in the python bootstrapper script which Octopus uses to execute your custom scripts.

Do either of these options appeal?

This topic was automatically closed 31 days after the last reply. New replies are no longer allowed.