Multiple environments per machine - OctopusPackageDirectoryPath

In a previous discussion on how to handle multiple environments on a single machine (http://help.octopusdeploy.com/discussions/questions/44-multiple-environment-per-machinetentacle-variables-per-machines) you mention an upcoming release will have a way of setting the path per package. I presume this is the new OctopusPackageDirectoryPath environment variable? If so, I’m finding it a bit clunky to use.

Our project consists of an IIS website and 3 applications under that site (for admin, mobile etc). It also has a Windows service. We provide this project to multiple clients, who each get their own subdomain of the products domain eg. client1.example.com, client2.example.com, client3.example.com. We therefore end up with IIS looking like this:

client1.example.com

  • admin
  • mobile
  • blah

client2.example.com

  • admin
  • mobile
  • blah

I therefore have 4 packages per site (excluding the Windows service package which is similarly duplicated for each client). The 4 packages are deployed as 4 steps.

I’ve set up each client as a environment, so I have Client 1 Production, Client 2 Production, Client 3 Production etc. I need to be able to put all - or a subset - on to the one machine.

Without using OctopusPackageDirectoryPath the 4 packages for the 3 clients all overwrite each other in C:\Octopus\Tentacle\Applications.

I started laboriously setting up an OctopusPackageDirectoryPath variable for each environment, for each step/package, when I realised that it was madness - I’ve have a huge number of variables to manage in the web page (which while nice probably isn’t designed for dozens and dozens of variables), and I’m hard-coding an awful lot of directory paths, with the potential for typos or duplications (even worse!). I have an OctopusWebSiteName for each site/application so I have 4 * num_clients just listing the OctopusWebSiteNames. Plus connections strings and branding name variables for each environment.

Surely extracting each package to C:\Octopus\Tentacles\Applications{OctopusEnvironmentName}\OctopusPackageName would be a lot simpler? I can’t see how it would break anything, but that’s based on about an hour’s experience of Octopus :slight_smile:

Paul

Hi Paul,

One of the features on my list to do next release is the ability to be able to do variable references/substitutions. In this case, you’d actually be able to do this:

OctopusPackageDirectoryPath = "C:\Octopus\Tentacles\Applications\{OctopusEnvironmentName}\MyPackage" 

And at runtime Octopus will do the replacement.

I take your feedback about managing long lists of variables - I’ll see what I can do about that in future.

Paul

Thanks Paul, variable substitution would be great.