feat: add cross-compile and release pipeline

- Enhanced Makefile with cross-compilation for linux/amd64, linux/arm64,
  darwin/arm64, windows/amd64, windows/arm64
- Added GitHub Actions CI workflow for testing on all platforms
- Added GitHub Actions Release workflow triggered by version tags
- Added VERSION file for version tracking
- Added scripts/release.sh for automated release process
- Added Dockerfile for containerized builds
- Added CONTRIBUTING.md with release process documentation
- Added CHANGELOG.md for version tracking
- Updated .gitignore to exclude build artifacts
- Fixed unused variable in cmd/obm/main.go
- Version now injected via ldflags (main.version, main.gitCommit, main.buildTime)
This commit is contained in:
MermaidMan 2026-05-22 15:38:55 +00:00
parent 33d9a2cb2e
commit d080e107d0
15 changed files with 1853 additions and 12 deletions

125
deploy.yaml.example Normal file
View file

@ -0,0 +1,125 @@
# OpenBoatmobile Deployment Configuration
# Usage: obm deploy --config deploy.yaml
#
# This file defines all configuration for non-interactive CI/CD deployment.
# All required fields must be provided. Optional fields have sensible defaults.
# Required: Agent framework selection
# Options: hermes, openclaw
framework: hermes
# Cloud provider configuration
provider:
# Required: Cloud provider name
# Options: hetzner, digitalocean
name: hetzner
# Required: API token (sensitive)
# Hetzner: Get from https://console.hetzner.cloud/ → Security → API Tokens
# DigitalOcean: Get from https://cloud.digitalocean.com/account/api/tokens
token: "your-api-token-here"
# SSH key configuration
ssh:
# For Hetzner: Key name as shown in Hetzner Cloud Console
names:
- "my-ssh-key"
# For DigitalOcean: Key fingerprints
# fingerprints:
# - "aa:bb:cc:dd:ee:ff"
# Server configuration
server:
# Server hostname (default: agent-gateway)
name: "my-agent-gateway"
# Agent name for display (default: same as framework)
agent_name: "hermes"
# Timezone (default: UTC)
timezone: "UTC"
# === Hetzner-specific ===
# Location: ash (Ashburn, VA), fsn1 (Falkenstein), nbg1 (Nuremberg), hel1 (Helsinki)
location: "ash"
# Server type: cpx21 (recommended), cx23, cpx31 (default: cpx21)
type: "cpx21"
# === DigitalOcean-specific ===
# region: "nyc3"
# size: "s-2vcpu-4gb"
# Inference provider configuration
inference:
# Required: Inference provider
# Options: venice, openrouter, openai, anthropic, custom
provider: venice
# Required: API key (sensitive)
# Venice: Get from https://venice.ai → Settings → API Keys
api_key: "your-venice-api-key"
# Optional: Base URL (required for custom provider)
# base_url: "https://api.custom.com/v1"
# Optional: Primary model (default depends on provider)
primary_model: "zai-org-glm-5"
# Optional: Model display name
primary_model_name: "GLM 5"
# Optional: Fallback models in priority order
fallback_models:
# - "openai/gpt-4o"
# Optional: Fallback providers with their own API keys
# fallbacks:
# - provider: openai
# api_key: "sk-..."
# - provider: openrouter
# api_key: "sk-or-..."
# Optional: Tailscale VPN configuration
tailscale:
enabled: true
# Required if enabled: Auth key from https://login.tailscale.com/admin/settings/keys
auth_key: "tskey-auth-..."
# Optional: Tailnet domain (default: tailnet)
tailnet: "mytailnet"
# Optional: Discord integration
discord:
enabled: false
# Required if enabled: Bot token from Discord Developer Portal
# bot_token: ""
# Required if enabled: Server/guild ID
# server_id: ""
# Optional: Allowed user IDs
# user_ids:
# - "123456789"
# Hermes-specific:
# home_channel: ""
# auto_thread: true
# Optional: Hermes-specific configuration
# hermes:
# docker_enabled: true
# Optional: OpenClaw-specific configuration
# openclaw:
# version: "lts"
# node_version: "22"
# enable_swap: true
# swap_size_gb: 2
# enable_fail2ban: true
# enable_unattended_upgrades: true
# Optional: Hermes gateway configuration
# gateway:
# token: ""
# allowed_users: ""
# allow_all: true
# Optional: Additional integrations
# integrations:
# brave_search_api_key: ""