I’ve hit a specific problem a couple of times now, so I thought I’d mention it as it’s a really dastardly problem to troubleshoot.
In short, it’s the scenario specified by bullet point #4 on this page: https://octopus.com/docs/deployment-patterns/multi-tenant-deployments/troubleshooting-multi-tenant-deployments, but I’ve lost several hours over the last couple of days trying to diagnose it, only to face-palm when I eventually found that page (and once I did find it I remembered reading it last time I had the same problem!).
I have two projects that are connected to multiple tenants - one was deploying fine to all tenants in our PROD environment, but the other wouldn’t let me deploy to a specific tenant in PROD. I spent a long time checking and double-checking the config for tenants, tag sets, connected projects, tentacle roles and tenants, tenants and tag sets assigned to an account, and a bunch of other config that I remember affects what tenants can be deployed to where,
It turns out the project that was working had all environments in the lifecycle assigned to one tenant (which was promoted up through the lifecycle phases), and the others only had PROD, thereby bypassing the lifecycle completely, which meant that any tenant could be deployed to PROD.
The project with issues had one tenant being deployed up the lifecycle phases, and the others being deployed to our DEV and TEST phases, but not PREPROD. As result it wasn’t available to deploy to PROD because the lifecycle was in effect due to multiple environments, but also not satisfied because it hadn’t been deployed to PREPROD for the “missing” tenants.
Something that would have helped me massively would be if projects connected to tenants with a single environment maybe had a warning icon on that page saying something like “connected projects assigned to only one environment will bypass the lifecycle”. That way when I review connected projects for a tenants, I’d easily see that one had the warning and one didn’t and it’d be immediately obvious that having only one environment connected causes different lifecycle behaviour to when multiple environments are connected.
Sorry if this sounds like a bit of a rant - I appreciate why the behaviour is different, I just keep forgetting that the difference exists and it would be really helpful to have a visual reminder in the UI.