Hi, a bit of clarification:
If, in Octopus Deploy, you have a server with two roles, say “external” and “internal” (different web sites on same server), and you want to publish the same web application for both external and internal users, Octopus Deploy will only deploy it once.
I have bent my mind around this, but haven’t found any single scenario where you want the “scope” of “have I installed this package before?” to be “server”, and not “role”. Can you think of one?
Example:
Server1 (only role “internal”):
Server2 (only role “external”):
Server3 (both roles “internal” and “external”):
With today’s implementation in Octopus Deploy, Server3 will only get one of the instances of MyApp installed (depending on whichever is installed first). I really can’t find any real-world scenario for this behaviour.
We would like to have Octopus consider roles as well when deciding whether an app has been installed or not.
“Have I installed MyApp for role ‘internal’ on this server?”
“Have I installed MyApp for role ‘external’ on this server?”
Positive side effect
In the folder structure, it’s much easer to find one’s way in the packages. Instead of this folder structure, which, when it grows, is rather unmanageable (how do I know which role(s) the “Employee-web” belongs to?):
E:\Octopus-apps\DEV5\Authentication-Web\2014.11.01.10_1
E:\Octopus-apps\DEV5\authentication-service\2014.11.01.10_1
E:\Octopus-apps\DEV5\Customer-Web\2014.11.01.10_1
E:\Octopus-apps\DEV5\Customer-service\2014.11.01.10_1
E:\Octopus-apps\DEV5\Employee-Web\2014.11.01.10_1
E:\Octopus-apps\DEV5\Employee-service\2014.11.01.10_1
E:\Octopus-apps\DEV5\Authentication-Web\2014.11.01.10_2
E:\Octopus-apps\DEV5\authentication-service\2014.11.01.10_2
E:\Octopus-apps\DEV5\Customer-Web\2014.11.01.10_2
E:\Octopus-apps\DEV5\Customer-service\2014.11.01.10_2
you would get the following:
E:\Octopus-apps\DEV5\external\Authentication-Web
E:\Octopus-apps\DEV5\external\authentication-service
E:\Octopus-apps\DEV5\external\Customer-Web
E:\Octopus-apps\DEV5\external\Customer-service
E:\Octopus-apps\DEV5\internal\Authentication-Web
E:\Octopus-apps\DEV5\internal\authentication-service
E:\Octopus-apps\DEV5\internal\Customer-Web
E:\Octopus-apps\DEV5\internal\Customer-service
E:\Octopus-apps\DEV5\internal\Employee-Web
E:\Octopus-apps\DEV5\internal\Employee-service
or, if you split web and service into different roles (i.e. external-web, external-service, internal-web, internal-service), even more structured and organized:
E:\Octopus-apps\DEV5\external-web\Authentication-Web
E:\Octopus-apps\DEV5\external-web\Customer-Web
E:\Octopus-apps\DEV5\external-service\authentication-service
E:\Octopus-apps\DEV5\external-service\Customer-service
E:\Octopus-apps\DEV5\internal-web\Authentication-Web
E:\Octopus-apps\DEV5\internal-web\Customer-Web
E:\Octopus-apps\DEV5\internal-web\Employee-Web
E:\Octopus-apps\DEV5\internal-service\authentication-service
E:\Octopus-apps\DEV5\internal-service\Customer-service
E:\Octopus-apps\DEV5\internal-service\Employee-service
I really can’t see any good argument for Octopus’ current behaviour, but I might of course be wrong. Could you think of a sensible use case for the current behaviour?
Thanks 