This document explains how the Retro AIM Server release process works.
Retro AIM Server is built and released to Github using GoReleaser. The release process, which runs from a local computer (and not a CI/CD process) creates pre-built binaries for several platforms (Windows, macOS, Linux).
GoReleaser runs in a Docker container, which provides a hermetic environment that prevents build contamination from the host environment.
This project offers signed Windows binaries and does not currently offer signed macOS binaries. This means that macOS distrusts Retro AIM Server by default and quarantines the application when you open it.
If you don't want to bypass this security mechanism, you can build the project yourself instead.
The following is the procedure that builds Retro AIM Server and uploads the build artifacts to a Github release.
Export a Github Personal Access Token that has write:packages permissions for the Retro AIM Server repo.
```sh
export GITHUB_TOKEN=...
```
Tag the build using semantic versioning.
```shell
git tag v0.1.0
git push --tags
```
Execute a dry-run build to make sure all the moving parts work together. Fix any problems that crop up before continuing.
```shell
make release-dry-run
```
Now run the release process. Once its complete, a private draft release should appear with attached build artifacts.
```shell
make release
```
Download the Windows release, sign it, and re-upload the .zip to the draft release created in the previous step.
Publish the draft release.