We have automated our build and testing process using TeamCity v9. TeamCity builds every commit to our Production branch, packages it into a ZIP using a custom console application we’ve written. To publish our package, you simply unzip it to a web root directory.
TeamCity, after every successful build and publish, executes our unit testing against every Alpha domain. The Alpha domains are each on different servers, including one that is on RedHat 6 and another on RedHat 7.
Once we are satisfied with Alpha testing we manually publish to our QA domain and the QA team does its testing.
Once we are satisfied with QA testing, we manually publish to our Production domains. We have several production domains across four servers and some have a secondary (redundant) site on another of these four servers.
We do not want to automate promotion of packages; instead, we want to manually select when to promote.
Any feedback as to the best approach for configuring Octopus for this type of deployment?
Thanks for reaching out!
Out of the box, package promotion between phases of your lifecycle (environments) is not enabled. Its something you have to manually set. So if you have a lifecycle with the phases Alpha,QA and Production, out of the box you’re gonna have to manually select when do you want to promote.
That said, something tells me I’m not quite understanding your scenario
Are you by any chance trying to avoid being forced to always deploy to Alpha and QA before being able to ship that package version to Production? Or do you always wanna get that package through all of the phases before going to Prod?
If you can let me know a bit more about your scenario perhaps with an example, I might be able to give you a better answer
Thank you for your help! Yes, at the moment, we do sometimes deploy to
Production bypassing QA. However, since Alpha deployment and testing are
automated via TeamCity and our deployment depends on that for the package,
we never bypass it.
Like I previously mentioned, by default Octopus wont automatically deploy from one phase to another. You have to set that up manually.
If you want to have a way to bypass phases and go straight to production, you could create a new lifecycle that only has the Production environment, and then create a channel scoped to that Lifecyle. That way when you have to release a hotfix really quick and you want to send it straight to production, you can just deploy to this channel and skip the middle environments.