My last project was a web project, and once I grasped Octopuses “Build once” model, I ran with it. It just made sense, got rid of all the “staging” branches with builds for each branch. Everything is aweeessssooome.
But now I’m working on a thick client (WPF) application, and want to go the different “channels” route (not to be confused with Octopuses channels, I’m talking about beta, stable, nightly channels). Or maybe I can use octopus channels, I’m not really sure.
I’ve been reading on how other companies do release channels (https://www.chromium.org/developers/tech-talk-videos/release-process#TOC-Web-vs-Client-app is an interesting read). I like this method as it does away with a lot of headaches, I would like to do something similar
The problem is the only way I see release channels working is multiple branches (which puts me back to build multiple versions). I don’t see any way around this. I’ve read http://docs.octopusdeploy.com/display/OD/Branching (the old process was “Environment Branches”), and it feels like I would be going back to “Environment Branches” - except they would be “Channel Branches”.
My current build in teamcity gets kicked off like this: Figure out version, pass in Channel and Version to build.ps1, update AssemblyInfo.cs with given version and channel (My Client (Beta), v 0.0.1.1), spit out a MyClientBeta.0.0.1.1.nupkg. A release gets created. Or maybe its MyClientStable.1.0.0.0.nupkg. But now I have several Nuget Feeds (MyClientStable*.nupkg, MyClientBeta*.nupkg, etc…). So now I have 3 steps, one for each feed, that might be scoped to some Channel.
Sorry for the long post, but I feel the research involved was relevant to this post. My final question is: How can I utilize Octopus (and maybe Octopus Channels) to work with my scenario? The only thing I can think of now is to have 3 teamcity builds that output (stable, beta, nightly) builds, and would create a release on a specific octopus channel, where there would be 3 channels (stable, beta, nightly).