Release
Release tarballs are the preferred way to distribute Userli. This page explains how to create a release.
Prerequisites
-
Update
CHANGELOG.mdwith a section for the new version. The date must match today's date inYYYY.MM.DDformat:## 6.3.0 (2026.03.01) ### Features and Improvements - ... -
Commit and merge the changelog update before running the release script.
-
You need a GitHub API token with the following scopes:
public_repo, repo:status, repo_deployment -
You need a GPG key for signing the tag and tarballs.
Create the release
Run the release script:
GITHUB_API_TOKEN=<token> GPG_SIGN_KEY="<key_id>" ./bin/github-release.sh <version>
The script will:
- Validate that
CHANGELOG.mdcontains the version with today's date - Create a GPG-signed git tag
- Build two release tarballs via
make release:userli-<version>.tar.gz-- the main applicationuserli-dovecot-adapter-<version>.tar.gz-- the Dovecot Lua adapter
- Generate SHA-256 and SHA-512 checksums
- Create GPG-detached signatures (
.asc) for both tarballs - Push the tag to
origin - Create a GitHub Release with notes extracted from
CHANGELOG.md - Upload all artifacts as release assets
Docker image
The Docker image (systemli/userli:latest) is published automatically to Docker Hub on every push to the main branch via GitHub Actions.
This is separate from the tarball release process.