I have a situation where we need to deploy multiple projects and several our dependency projects (zip files) to our environments.
Every 2 weeks we have release and during those 2 weeks we want to deploy all or some of projects and dependencies (we don’t deploy always all projects and dependencies since we don’t change them all). So there are situations when we deploy e.g project A and B and dependency A,B,C,D, and sometimes only project A and dependency B.
During that 2 weeks we on daily base deploy to dev environment X times project A, Y times project B, XYZ times dependency C … When we stop with development then we deploy usually latest version or specifc stable version of each project and dependency to higher test environment. If we found some bugs, we fix that and deploy on daily base on dev env., and again deploy all the changes (off each project or dependency) to higher test environment. If everything is fine then we deploy to stage and production.
Also there are situations when we deploy hot fixes to production.
We are using teamcity and we want from teamcity create package of each project and dependency, deploy it seperatly (one by one) to lower dev environment. Later when we deploy to higher env (stage, production) we want to trigger one time that deployment (so we need to tell which projects and which version needs to be deployed, so if there are no changes on some projects/dependencies we don’t deploy them).
Wondering how should we define our deployment. Should we have multiple projects in octopus and one “parent” project which will contain all them. Or have one project and in release process step packages of each projects and dependencies?
Also can we from teamcity somehow tell which project and which version needs to be deployed to higher environments? Also tell octopus to not deploy projects/dependencies which are not changed from last release?