Anaconda Enterprise: Documentation

# Recommended workflow

One of the most useful features of Anaconda Repository is its ability to help manage package development and deployment in a seamless fashion. This page describes the development process and channel usage employed by one of our internal teams, to serve as an example of how you can leverage channels for workflow separation.

Multiple channels allow our team to maintain separate package states and easily earmark and control the versions and states of packages that users can install.

Our team created the following channels:

- Master.
- Staging.
- Release.

We have used this workflow through 4 release cycles and it has worked out well for us.

## Master

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

## Staging

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

## Release

The staging channel gets culled so that 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.