Files
Vyntral 0a50fb4eb5 chore(release): goreleaser + CI workflows + v2 demo GIFs
Release infrastructure:
- .goreleaser.yml: builds 5-platform binaries (darwin/linux/windows
  x amd64/arm64), SHA-256 checksums, pre-release detection for -rc tags
- .github/workflows/release.yml: runs on any 'v*' tag — test -> build
  -> publish via goreleaser-action
- .github/workflows/ci.yml: test + vet + race detector on every push
  to main / v2-* and every PR
- .gitignore: extended to cover scan artifacts (gods-eye-*.json,
  report-*.json, *.stderr), YAML configs (god-eye.yaml, .god-eye.yaml),
  IDE state (.idea, .vscode, .cursor), Claude Code working notes
  (CLAUDE.md, .claude/), and the /god-eye build artifact

Demo GIFs recorded live against scanme.nmap.org (Nmap's authorized
test host):
- assets/wizard-demo.gif (272 KB): interactive setup walkthrough
- assets/live-scan.gif (37 KB): colorized event stream
- assets/ai-verbose.gif (122 KB): full AI cascade + end-of-scan brief

Legacy v0.1 assets removed:
- assets/demo.gif
- assets/demo-ai.gif
2026-04-18 16:49:29 +02:00

86 lines
2.1 KiB
YAML

# Release workflow — runs on any tag that starts with 'v' (e.g. v2.0.0-rc1).
#
# Responsibilities:
# 1. Run the full test suite with the race detector.
# 2. Build and publish binaries for macOS / Linux / Windows (amd64 + arm64)
# via goreleaser-action.
# 3. Attach them to a GitHub Release whose body comes from .goreleaser.yml
# headers + CHANGELOG entries.
#
# What you need:
# - Nothing beyond the default GITHUB_TOKEN that Actions provides. goreleaser
# uses it to create the release.
#
# To cut a new release locally:
# git tag -a v2.0.0-rc1 -m "v2.0.0 RC1"
# git push origin v2.0.0-rc1
# Then watch the run under "Actions → Release".
name: Release
on:
push:
tags:
- 'v*'
permissions:
contents: write # goreleaser needs this to create the release + upload assets.
jobs:
test:
name: Test with race detector
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v4
with:
fetch-depth: 0
- name: Set up Go
uses: actions/setup-go@v5
with:
go-version: '1.21'
- name: Cache Go modules
uses: actions/cache@v4
with:
path: |
~/.cache/go-build
~/go/pkg/mod
key: ${{ runner.os }}-go-${{ hashFiles('**/go.sum') }}
restore-keys: |
${{ runner.os }}-go-
- name: Verify modules
run: go mod verify
- name: Vet
run: go vet ./...
- name: Test (race detector)
run: go test ./... -race -timeout 180s
release:
name: Build & publish binaries
needs: test
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v4
with:
fetch-depth: 0
- name: Set up Go
uses: actions/setup-go@v5
with:
go-version: '1.21'
- name: Run goreleaser
uses: goreleaser/goreleaser-action@v6
with:
distribution: goreleaser
version: '~> v2'
args: release --clean
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}