With the combination of Subscription webhooks and the Octopus.Client library, you could imagine a lot of possibilities for scripting various global behaviours in response to certain events. Eg. A ‘DeploymentSucceeded’ event occurs, that fires your subscription webhook, you catch the webhook and then call the Octopus API to deploy a certain project (where you’ve abstracted your step template to) … When that deployment completes, then you call the API again to trigger some other logic and so on. It doesn’t really feel like that fits for Blue-Green deployments though.
Can you tell us more about your deployment process? Why so many projects? Are they all independent (very different deployment processes) or are they all using pretty much the same deployment process but with different variables?
If you’ve got lots of projects that all share similar (but not always the same) deployment steps, perhaps you could consolidate everything into a single project that uses Channels? That way, your global step template(s) can be set to run for all channels, while other steps can be scoped to individual channels?