Release Process for go53

Automated Releases with GitHub Actions

How It Works

When you push a git tag starting with v (e.g., v0.77.0), GitHub Actions automatically:

  1. GoReleaser builds binaries for all platforms (Linux, macOS, Windows)
  2. Both applications are bundled: go53 (server) and go53ctl (CLI tool)
  3. Binaries are published on GitHub Releases with checksums

Release Process

1. Create Version

./bump_version.sh
# Answer with the new version, e.g., 0.77.0

Or manually:

echo "0.77.0" > VERSION

2. Create Git Tag

git tag -a v0.77.0 -m "Release version 0.77.0"
git push origin v0.77.0

Or via bump_version.sh (which does everything automatically).

3. GitHub Actions Runs Automatically

Download Binaries

One-liner Installation (Linux/macOS)

The easiest way to install go53 with systemd service support:

curl -fsSL https://raw.githubusercontent.com/TenforwardAB/go53/main/scripts/install.sh | sudo bash

Or with a specific version:

curl -fsSL https://raw.githubusercontent.com/TenforwardAB/go53/main/scripts/install.sh | sudo bash -s v0.77.0

Manual Installation

After release, binaries are available for direct download:

# Linux x86_64
wget https://github.com/TenforwardAB/go53/releases/download/v0.77.0/go53_0.77.0_linux_amd64.tar.gz

# macOS arm64 (Apple Silicon)
wget https://github.com/TenforwardAB/go53/releases/download/v0.77.0/go53_0.77.0_darwin_arm64.tar.gz

# Windows x86_64
wget https://github.com/TenforwardAB/go53/releases/download/v0.77.0/go53_0.77.0_windows_amd64.zip

Extract and install manually:

tar -xzf go53_0.77.0_linux_amd64.tar.gz
sudo install -m 755 go53/go53 /usr/local/bin/
sudo install -m 755 go53/go53ctl /usr/local/bin/

Local Testing Before Release

# Build locally
make build

# Test binaries
./go53 --help
./go53ctl --help

Configuration

Supported Platforms

Systemd Service (Linux)

The installation script automatically sets up a systemd service. After installation:

# Start the service
sudo systemctl start go53

# Enable auto-start on boot
sudo systemctl enable go53

# Check service status
sudo systemctl status go53

# View logs
journalctl -u go53 -f

# Stop the service
sudo systemctl stop go53

# Restart the service
sudo systemctl restart go53

Service Configuration

Edit the service file to customize:

sudo systemctl edit go53

View Service Logs

# Last 50 lines
journalctl -u go53 -n 50

# Real-time logs
journalctl -u go53 -f

# Today's logs
journalctl -u go53 --since today

Checksums

Each release includes checksums.txt to verify file integrity:

sha256sum -c checksums.txt