Thanks for getting in touch! While there is no way to do exactly
what you want here and tell Octopus to skip a step if it fails,
there are perhaps some other options available that you could look
The first thing that comes to mind is that you could use
channels. More specifically, you could create a channel for each
package, once the package is ready to ship, you could simply create
a release for that specific channel. This will allow you to
separate all 3 in case one is not needed/ready.
Here is a link to our documentation on channels: http://docs.octopus.com/display/OD/Channels
Please let me know if you run into any issues or have any questions
Another option is to configure the project to always choose the
latest package and set it to “Skip any package step that is
already installed” Though, this gives you a lot less control
than the channels option.
As for your second question. This is actually a default
behaviour of Octopus, we sequentially run each step of the
deployment. You should be able to achieve this by separating the
deployment and the recycle of the service into two different steps.
If you create some more scoping for the servers.
As an example. Have one of them as a member of say
NAS_deploy and have them both a member of app
server for the deploy and the recycle steps respectively.
This will make Octopus install the files on the
NAS_deploy machine and then run the second step on
both machines with the app_server role.