Java artifacts are often staged through different "quality levels", named like alpha, beta, releaseCandidate, release etc. They enter the next stage if they have passed tests (automatic or manual ones).
We have an old, primitive staging software in our company. This should be replaced. Before we opt for getting some existing software, or writing something new we want to understand the topic more thoroughly. The first question for me is: Is the build server the right place to handle staging?
The build server already handles a number of steps like compiling, unit-testing, packaging etc. These steps finally deploy an artifact to our company repository. Implementing staging would mean that after that first deployment, the process would be halted, and one could manually trigger further stages, which again would lead to deployments.
Or should the staging be done in an Artifact Repository, pushing artifacts from one subrepository to another?
To make things clear: The part I am mainly interested in is the manual process of pushing artifacts from one stage to the next, usually after manual testing. It is important that the artifact is already in the Artifact Repository before it enters the final stage, e.g. beta versions are available from the Artifact Repository, but a manager can promote beta versions to release versions.