Releasing from a release branch
For teams that prefer to put work in progress directly on the main code line, releasing from a branch is more appealing. While main or trunk gets deployed to the test environment, release branches are the ones you deploy to staging, and ultimately production. Release branches can be used as part of the Gitflow approach as well.
Release branches are cut periodically and changes are shipped out from there. And most teams want to make a human decision around when to and where to deploy a release branch, rather than an automated trigger. No problem.
Bamboo has this concept of "releases" which are entities within Bamboo that encapsulate the most recent artifacts built from a given branch, plus all the commits, test results, and Jira issues associated with all the builds on that branch since the last time a release was created. So, under the hood, a release is basically your packaged artifacts plus a whole lot of meta-data.
And we want all that rich, juicy data to flow through your continuous delivery pipeline along with the artifacts so you can trace it all back to the first commit and the user story that started the whole thing. (I believe it was Geoffrey Chaucer who first said "All roads lead to Jira Software.") So conceptually, it's the release you're promoting through your environments – not just a build. And you'll see that reflected in Bamboo's UI.
Anyway, back to triggers. When deploys are triggered automatically, as in the case above, Bamboo creates a release automatically.
But push-button deploys are different. In this case, you create the release (which can be done from a build results screen or from within a deployment project), give it a name, and select the build to pull artifacts from. With the release in hand, you can now deploy it to any environment – even straight to production, if that's what you really need to do. Teams that use the approach typically create several releases (release candidates, really) before ultimately giving one the stamp of approval and sending it further through the pipeline.
When it's time to promote the release to the next environment, head to the all deployment projects screen, where you'll see all your deployment projects (duh) and all the environments associated with each project. Click the deploy icon next to your target environment, and walk through the deployment preview wizard, selecting the option to deploy an existing release (as described in much greater detail in the link).