Anaconda Enterprise: Documentation

# Recommended Workflow (AER 2.29)

One of the most useful features of Anaconda Repository is its ability to help you manage package development and deployment in a seamless fashion. Below you can find a write-up of the actual development process and channel usage employed by one of our internal teams.

## Leveraging Channels for Workflow Separation

Using multiple channels allows your team to maintain separate package states and easily earmark and control the versions and states of packages that users can install. For example, your team might create the following channels:

- master
- staging
- release

Master is created any time something is merged into our master branch. It’s considered the development build of all of the components that make up the software. Code that makes it to this should be stable and have been confirmed independently, but a full QA test has not been run on it yet.

Once we’re ready to start working on a release, we create a staging:X.Y.Z branch. This contains all code that’s going to go into a release. No new features should be introduced at this point, just any last minute bug fixes to existing code.

The staging channel gets culled so only the latest package is maintained in it – any alpha, beta, or dev packages are removed. After all testing is complete, all issues are resolved, and the channel contains only one version of each package, we copy that package into a release:X.Y.Z channel, then lock that channel.

We’ve used this through 4 release cycles and so far it’s worked out well for us.