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)
- Create and push a tag:
git tag v1.0.0git push origin v1.0.0 - 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: truebrew: disable: truesnapcraft: disable: truechocolatey: disable: true
This ensures only GitHub releases are created.
CI/CD Integration#
GitHub Actions#
The .github/workflows/release.yml file provides:
- Parallel builds on all three platforms
- Automatic triggering on tag pushes
- Rust toolchain setup for each platform
- 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#
- Cross-compilation failures: Use native builders for
each platform - Missing system headers: Ensure proper toolchain
setup - 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
--releaseflag 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.