Improve variables UI
The variables view is very basic and it generally needs improving since it quickly gets hard to use when you begin adding lots of variables.
1. You have to add the same variable name for multiple environments and the ordering of environments is not the same. This is error prone and makes the list hard to parse.
2. There is no description for variables so you need to add very long names sometimes. This has already been covered, but I added it for completeness. See https://octopusdeploy.uservoice.com/forums/170787-general/suggestions/6079578-enhance-the-variable-maintenance-screen-with-varia
3. There can be different types of variables which are changed for different reasons. It would be great to have a category concept to group them with.
4. For very large numbers of variables it would be great with a search box which filters the variables as you type. It should also search in the description.
See the following mockup for an example:
Colin Winning commented
Having a Set of Variables per Environment and/or Channel would make setting up complex projects much easier. Just now it is very time consuming and error prone copying individual settings.
Anton Swart commented
Show a count of the number of variables. During setup and changing my steps and environments I've had variables dissapearing. A count could help towards noticing this issue. Better would be to warn when a process/environment change is going to delete variables.
Eric Williams commented
It's a small thing but this screen would be a good candidate for a mono-spaced / fixed width font
Harald Sømnes Hanssen commented
Not sure if my idea already is described in this suggestion
It would be helpful to see what the current environments are for the variable I have selected. Instead it shows 'press enter to edit scope', and when using keyboard navigation, it often results in toggling up a line to see what the scope on the selected line is only to toggle down and immediately forget again. I'd like to be able to see the current scope for a variable while deciding whether I need to modify it. Resting the cursor (selected marker) the line above the one I'm considering just isn't intuitive despite a few weeks of trying to get used to it.
John Rosenbaum commented
Eric Bosman commented
I also vote for a better UI
What I think that important is:
1) Help the installer (the one who is making the environments) with choosing the values of the variables in such a way that the resulting environments are as much as possible the same.
2) Give the installer an easy UI to add an environment.
If I may make a suggestion:
Make in the interface a page with 3 columns for adding/changing an environment.
*First column filled with all the different known variable names which are available in a variable set
*Second column filled with the current values
**has a filter for scopes - possibilities are Environment, Role, Target.
**If scope = Environment, then show in this column all the variables with the scope of environment = empty
**Third column – show the value of scope=role belonging to the variable left of it
**Fourth column – show the value of scope=target belonging to the variable left of it
*Fifth column the new environment, this is where you can specify the value’s for the new environment.
**The installer has to specify in the top the name of the new environment and is then able to fill all the values of the variables.
**If you fill a field with a value over here, this will result in a new variable with a value and environment=name of new environment
You have to be able to walk through the 5 column with the tab-key
If selected in second column scope filter = Role then show in this column all the variables with the scope of role = empty
**Third column – show the value of scope=target belonging to the variable left of it
**Fourth column – show the value of scope=environment belonging to the variable left of it
*Fifth column the new role, this is where you can specify the value’s for the new role
**The installer has to specify in the top the name of the new role and is then able to fill all the values of the variables.
**If you fill a field with a value over here, this will result in a new variable with a value and role=name of new role
If selected in second column scope filter = Target then show in this column all the variables with the scope of target = empty
**Third column – show the value of scope=environment belonging to the variable left of it
**Fourth column – show the value of scope=role belonging to the variable left of it
*Fifth column the new role, this is where you can specify the value’s for the new target
**The installer has to specify in the top the name of the new target and is then able to fill all the values of the variables.
**If you fill a field with a value over here, this will result in a new variable with a value and target=name of new target
This gives a simple sheet for filling variables for a new environment or role or target.
I support the idea that you can group variables based on name.
Filter variables according to environment and step would be a great feature.
Also add the feature of clone entire variable set (filter by enviroment || role || machine....) to a new destination scope.
Ed Haack commented
It would be nice to include an "import/export csv" feature, rather than having to use the UI. Yes, there's probably an API call you can make.
Ed Haack commented
Recently, a webinar showed the "filtering" option in the Variables page. Clicking the top/left icon brings up a filter row which can weed-out only the values you want to see (scope, name, value)... even more-so in v. 3.4
For example, in "scope" I enter "qa" and it shows all values for "qa", including values that are in other groups.
Also please fix/add keyboard shortcuts. Tabbing through gives all sorts of weirdness in Firefox where it's impossible not to add roles to a scope because the dropdown won't go away and hitting tab again autofills with the highlighted item.
John Downs commented
I agree with everything here, but also would love to be able to see - for any given combination of step/environment/tenant - what the computed value of each variable is. This would be very helpful when debugging variable scopes.
I may have missed it in here somewhere, but in this same arena it would be AWESOME to be able to create a namespace for your variables as well. overkill? maybe but currently to keep them in order I do namespace.something.<maybesomething here> but if I type the namespace wrong...
Paul Wilcox commented
I actually missed this post so ended up posting another request on this yesterday (I'd second a number of requirements in the original post and list of comments)....
Tim Ververs commented
Being able to Copy variable list is the most awesome thing i would live to have! Not being able to copy things (assign for diffrend environments) really creates alot of duplicate work.
Michael Peterson commented
So I'd actually like to vote for this as variable management is a pain especially as you add an environment including figuring out which ones to duplicate? Typing in the environment in the search returns not only the environment I included but any that don't have anything. And if I want to compare two environments... well I can't enter both because it's an "AND" instead of an "OR".
And so I'm stuck either picking another tool to manage these, or writing my code. Which is why I'm here as having it in Octopus would be awesome. But from reading the comments, and then reading the description I'm unclear of what exactly would be done if this item is worked.
All of the above
BTW, I'm assuming it's not just me (or maybe it is and it's just a plugin), but somewhere in one of the releases the adding of a variable and tab order got messed up. If I type in a name of a "new" variable and tab, I end up in the uppermost line in the "Name" field rather than in the "Value" field of that row. Fixing that would be high on my list.
Glen Boonzaier commented
Its impossible for Octopus to determine if a variable is used or not considering that the variable may only be be defined in Octopus but the usage is in a config file within a project. It would only be able to find variables that are used in Octopus. A better idea would be to track the "last used date" of a variable.
Here is an proposed example of what it could look like when a project step is making use of an undefined variable.
Octopus should show a warning before allowing the deletion/renaming of a variable that is in use within a project step or perhaps even when the variable was known to be used in the most recent release.
Variable UI needs a big overhaul. It is very cumbersome and frustrating to add variables when you have large number of them.