Documents
Release Process
Release Process
Type
External
Status
Published
Created
Apr 18, 2026
Updated
Apr 18, 2026
Updated by
Dosu Bot
Source
View

DaemonEye Release Process#

This document describes how to build and release DaemonEye binaries
using GoReleaser with platform-specific configurations.

Overview#

DaemonEye uses separate GoReleaser configurations for each platform
to avoid cross-compilation issues:

  • macOS: .goreleaser-macos.yaml - Native
    builds on macOS
  • Linux: .goreleaser-linux.yaml - Native
    builds on Linux
  • Windows: .goreleaser-windows.yaml -
    Native builds on Windows

Quick Start#

Automated Release (GitHub#

Actions)

  1. Create and push a tag:
    git tag v1.0.0git push origin v1.0.0
  2. GitHub Actions will automatically:
    • Build binaries on each platform
    • Create GitHub releases
    • Upload artifacts

Manual Release#

macOS#

# On macOS systemgoreleaser release --config .goreleaser-macos.yaml

Linux#

# On Linux systemgoreleaser release --config .goreleaser-linux.yaml

Windows#

# On Windows systemgoreleaser release --config .goreleaser-windows.yaml

Configuration Details#

Platform-Specific Builds#

Each configuration targets specific architectures:

  • macOS: aarch64-apple-darwin,
    x86_64-apple-darwin
  • Linux: aarch64-unknown-linux-gnu,
    x86_64-unknown-linux-gnu
  • Windows: aarch64-pc-windows-msvc,
    x86_64-pc-windows-msvc

Build Tools#

  • macOS: Uses native cargo (no
    cross-compilation issues)
  • Linux: Uses native cargo (no
    cross-compilation issues)
  • Windows: Uses native cargo (no
    cross-compilation issues)

Disabled Features#

All configurations disable platform-specific packaging:

  • archive: disable: true
  • brew: disable: true
  • snapcraft: disable: true
  • chocolatey: disable: true
    This ensures only GitHub releases are created.

CI/CD Integration#

GitHub Actions#

The .github/workflows/release.yml file provides:

  1. Parallel builds on all three platforms
  2. Automatic triggering on tag pushes
  3. Rust toolchain setup for each platform
  4. GoReleaser installation and execution

Other CI Systems#

For other CI systems, use the same pattern:
# Option 1: Install via package manager (recommended)# Ubuntu/Debian:# sudo apt update && sudo apt install goreleaser# macOS:# brew install goreleaser# Windows:# choco install goreleaser# Option 2: Download and verify manually# Download the latest releasecurl-L-o goreleaser.tar.gz https://github.com/goreleaser/goreleaser/releases/latest/download/goreleaser_Linux_x86_64.tar.gz# Verify checksum (replace with actual checksum from release page)echo"expected_checksum goreleaser.tar.gz"|sha256sum-c# Extract and installtar-xzf goreleaser.tar.gzsudo mv goreleaser /usr/local/bin/# Run platform-specific buildgoreleaser release --config .goreleaser-<platform>.yaml

Troubleshooting#

Common Issues#

  1. Cross-compilation failures: Use native builders for
    each platform
  2. Missing system headers: Ensure proper toolchain
    setup
  3. Framework linking issues: Use native cargo instead
    of cargo-zigbuild

Debug Commands#

# Test build locallygoreleaser build --config .goreleaser-macos.yaml --snapshot# Check configurationgoreleaser check --config .goreleaser-macos.yaml# Verbose outputgoreleaser release --config .goreleaser-macos.yaml --verbose

Release Artifacts#

Each platform build creates:

  • procmond: Process monitoring daemon
  • daemoneye-agent: Detection orchestrator
  • daemoneye-cli: Command-line interface
    All binaries are uploaded to GitHub releases with platform-specific
    naming.

Security Considerations#

  • All builds use --release flag for optimized
    binaries
  • Dependencies are locked with Cargo.lock
  • No cross-compilation reduces attack surface
  • Native builds ensure proper system integration

Source note: Populated from the public repo
(docs/release-process.md) on 2026-04-18. This page was
previously empty; the content above mirrors the repo at the time of
sync.