# Releasing AMO
Until August 22nd 2024, we managed our release documents manually in the addons repository (see [release-docs.rst][addons-releases]).
Currently, [addons-server][addons-server] is the only repository deploying via [github releases][addons-server-releases].
## Creating a new release
To create a new release, use the [draft release workflow][draft-release-workflow].
This will create a new draft release in the repository. This release can be updated with instructions and things to note for the next push.
You need to set the push hero (see [push-duty](./index.md) for the rotation) as the assignee for the draft release. and the next push date, in `YYYY.MM.DD` format. This should be 2 weeks after the current push, the exact date will correspond with the next jira sprint.
## Deploying to stage
During the release process, we can trigger a staging deployment for `addons-server` by publishing the current draft release that should have been created at the end of the last push. It will likely be the first release in the [list][addons-server-releases] and will match the current push tag date.
### Handling addons-frontend
addons-frontend is currently not using GitHub Actions, so manual tagging is required. See [tag-services][./tag-services.md]. Once the tag has been pushed, CI will run and eventually a new docker image should be built and deployed to stage.
You can then go back to addons-server draft release to update the compare link to the previous tag for addons-frontend.
### Publishing a release
In order to publish the release, click the edit icon at the top right of the release card.
- Update the release notes by clicking the `Generate release notes` button.
- Publish the release by clicking the `Publish release` button.
- Include the compare link for `addons-frontend`. See [tagging](./tag-services.md) for details.
```{warning}
Make sure that the release is tagged as "latest". This is the default behavior but don't accidentally un-check it.
```
Publishing a release will trigger the [release workflow][release-workflow].
The workflow will:
- generate a tag for the release based on the specified tag (should use the date timestamp see [tag-services](./tag-services))
- run our full CI pipeline on the tag
- trigger a stage deployment for the tag
### Failing CI
Github unfortunately does not link workflows to releases that triggered them. You can inspect [Failed CI][failed-ci-query]
to see workflows triggered by a release event that failed.
```{tip}
We should include slack notifications for failed CI, especially on deployment triggering workflow runs.
```
## Deploying to production
Follow [documentation in Confluence about how to deploy with ArgoCD][deploy-argo-cd].
[failed-ci-query]: https://github.com/mozilla/addons-server/actions/workflows/ci.yml?query=event%3Arelease+is%3Afailure
[release-workflow]: https://github.com/mozilla/addons-server/actions/workflows/release.yml
[draft-release-workflow]: https://github.com/mozilla/addons-server/actions/workflows/draft_release.yml
[addons-server]: https://github.com/mozilla/addons-server
[addons-server-releases]: https://github.com/mozilla/addons-server/releases
[addons-releases]: https://github.com/mozilla/addons/tree/main/releases
[deploy-argo-cd]: https://mozilla-hub.atlassian.net/wiki/spaces/SRE/pages/27921597/AMO+Dev+Resources#ArgoCD