diff --git a/RELEASE.md b/RELEASE.md index 3b7ca10..5d2523b 100644 --- a/RELEASE.md +++ b/RELEASE.md @@ -2,7 +2,7 @@ ## Overview -This project uses **Gitea Actions** to automatically build and release binaries and Docker images when you push to the `master` branch or create a new tag. +This project uses **Gitea Actions** to automatically build and release cross-platform binaries when you push to the `master` branch or create a new tag. ## Automatic Release Pipeline @@ -11,13 +11,12 @@ This project uses **Gitea Actions** to automatically build and release binaries 1. **Master Branch Push**: When you push to `master`, the workflow: - Builds all platform binaries (Linux/macOS/Windows, amd64/arm64) - Generates checksums (SHA256) - - Uploads artifacts for 30 days - - Builds Docker images (server & agent) + - Binaries are available as build artifacts for 30 days 2. **Tag Creation**: When you create a tag (e.g., `v1.0.0`), the workflow: - Does all of the above - - Creates a GitHub Release - - Uploads all binaries and Docker images to the release + - Creates a Gitea Release + - Uploads all binaries and checksums to the release (permanent storage) ### Supported Platforms @@ -26,19 +25,32 @@ Binaries are built for: - **macOS**: amd64 (Intel), arm64 (Apple Silicon) - **Windows**: amd64 -Docker images are built for Linux containers. +### What Gets Built and Released + +When you push a tag, the workflow automatically creates: + +**Binaries** (10 files total): +- `nerd-monitor-server-linux-amd64` - Server for Linux x86_64 +- `nerd-monitor-server-linux-arm64` - Server for Linux ARM64 (Raspberry Pi, etc.) +- `nerd-monitor-server-darwin-amd64` - Server for macOS Intel +- `nerd-monitor-server-darwin-arm64` - Server for macOS Apple Silicon +- `nerd-monitor-server-windows-amd64.exe` - Server for Windows +- `nerd-monitor-agent-linux-amd64` - Agent for Linux x86_64 +- `nerd-monitor-agent-linux-arm64` - Agent for Linux ARM64 +- `nerd-monitor-agent-darwin-amd64` - Agent for macOS Intel +- `nerd-monitor-agent-darwin-arm64` - Agent for macOS Apple Silicon +- `nerd-monitor-agent-windows-amd64.exe` - Agent for Windows + +**Checksums**: +- `SHA256SUMS` - SHA256 checksums for all binaries (for verification) ## Workflow Configuration The Gitea Actions workflow is defined in `.gitea/workflows/release.yml` ### Trigger Events -- Push to `master` branch -- Push of git tags (e.g., `v1.0.0`) - -### Jobs -- `build`: Compiles all platform binaries and generates checksums -- `docker-build`: Builds Docker images for server and agent +- Push to `master` or `main` branch (builds only, no release) +- Push of git tags (e.g., `v1.0.0`) - triggers full release with uploads ### Creating a Release @@ -89,10 +101,6 @@ When you push a tag, the workflow automatically: **Checksums**: - `SHA256SUMS` - SHA256 checksums for all binaries (for verification) -**Docker Images**: -- `nerd-monitor-server-v1.0.0.tar` - Server Docker image (can be imported) -- `nerd-monitor-agent-v1.0.0.tar` - Agent Docker image (can be imported) - ## Local Building You can also build binaries locally: @@ -110,21 +118,25 @@ make clean Binaries are created in the `bin/` directory. -## Docker Images +## Docker Images (Manual Build) -Two Docker images are built: +Docker images are available but not built automatically by CI/CD. To build them manually: -### Server Image ```bash -docker pull nerd-monitor-server:latest -docker run -p 8080:8080 nerd-monitor-server +# Build server image +docker build -t nerd-monitor-server:latest -f Dockerfile.server . + +# Build agent image +docker build -t nerd-monitor-agent:latest -f Dockerfile.agent . + +# Or use Docker Compose +docker-compose build + +# Or use Docker Compose to run both +docker-compose up ``` -### Agent Image -```bash -docker pull nerd-monitor-agent:latest -docker run nerd-monitor-agent --server your-server:8080 -``` +See `DOCKER_COMPOSE.md` and `QUICKSTART.md` for detailed instructions. ## Gitea Configuration @@ -205,18 +217,30 @@ nerd-monitor-agent-windows-amd64.exe SHA256SUMS (checksums for all binaries) ``` -## Coolify Integration +## Deployment Options -If you want to use Coolify for deployment: +### Option 1: Use Pre-Built Binaries (Recommended) +Download the native binaries from the Releases tab and run directly: +- Smallest footprint +- No Docker required +- Easiest to deploy to existing machines -1. **For Server Deployment**: - - Use `Dockerfile.server` as the build context - - Coolify will auto-build on `master` branch pushes - - Deploy the server container to Coolify +### Option 2: Use Docker (Manual Build) +Build Docker images manually and deploy: +```bash +docker build -t nerd-monitor-server:latest -f Dockerfile.server . +docker run -p 8080:8080 nerd-monitor-server:latest +``` -2. **For Agent Deployment**: - - Use `Dockerfile.agent` as the build context - - Deploy the agent container to machines that need monitoring +See `docker-compose.yml` for running both server and agent together. + +### Option 3: Use Docker Compose +For quick development/testing with both server and agent: +```bash +docker-compose up +``` + +See `DOCKER_COMPOSE.md` and `QUICKSTART.md` for details. ## Troubleshooting @@ -259,22 +283,12 @@ If you want to use Coolify for deployment: 3. Verify the release was created: Go to Releases tab 4. Check that `GITEA_TOKEN` secret is still valid (tokens can expire) -### Docker Image Build Fails - -**Problem**: `docker-build` job fails - -**Solutions**: -1. Verify Docker is installed on the runner: SSH to runner and run `docker --version` -2. Check if the Dockerfile has syntax errors: `docker build -f Dockerfile.server .` -3. Ensure runner has enough disk space for building: `docker system df` -4. Check Docker daemon is running: `sudo systemctl status docker` - ### How to Check Workflow Logs 1. Go to your Gitea repository 2. Click the **Actions** tab 3. Click on the workflow run (should show the tag name) -4. Click on the job that failed (`build` or `docker-build`) +4. Click on the `build` job 5. Scroll through the log to find error messages 6. Look for red `❌` marks indicating failures