Skip to content

Add homelab CD pipeline, semantic releases, MIT license, and docs#3

Merged
memetics19 merged 10 commits into
mainfrom
feat/cicd-homelab-deploy
Jun 20, 2026
Merged

Add homelab CD pipeline, semantic releases, MIT license, and docs#3
memetics19 merged 10 commits into
mainfrom
feat/cicd-homelab-deploy

Conversation

@memetics19

@memetics19 memetics19 commented Jun 20, 2026

Copy link
Copy Markdown
Owner

Summary

Adds an end-to-end release-and-deploy pipeline for Pulse, project licensing,
docs, and a committed commit-policy guardrail. On merge to main, release-please
proposes a version; merging the release PR tags vX.Y.Z, builds and pushes the
image to GHCR, and deploys to the homelab over Netbird + SSH. Tests gate every
step.

What's included

CI/CD

  • release-please.yml — semantic versioning from Conventional Commits (config + manifest seeded at 0.0.0).
  • release.yml — now: test → build/push GHCR image → deploy job (needs: release) that joins Netbird, SSHes to
    ubuntu@10.2.0.115, and runs docker compose pull && up -d. Release/changelog ownership moved to release-please.
  • deploy/docker-compose.homelab.yml — pulls ghcr.io/memetics19/pulse (no local build).

Build fix / refactor

  • is_active is now a real Go bool (monitors + infra_agents) via sqlc column override + regeneration, with all consumers,
    the import CLI, and the admin UI updated.

Guardrail

  • .githooks/{commit-msg,pre-commit} + CONTRIBUTING.md: reject AI/co-author trailers and un-gofmt'd Go. Enable with git config core.hooksPath .githooks.

Project / docs

  • LICENSE.md (MIT) referenced from README.
  • docs/deployment.md (in nav), status-page GIF wiring + capture recipe, getting-started import/clone-URL fixes.

Breaking change

is_active in monitor and agent JSON is now boolean (true/false) instead of
integer (0/1), on both request and response sides of /api/monitors and
/api/agents. The bundled UI and CLI are updated; external API clients must adapt.

Before deploy works (post-merge)

  • Add secrets: NETBIRD_SETUP_KEY, NETBIRD_MANAGEMENT_URL (if self-hosted), SSH_PRIVATE_KEY, SSH_HOST_FINGERPRINT,
    DEPLOY_HOST=10.2.0.115, DEPLOY_USER=ubuntu. (PULSE_TOKEN exists.)
  • Host 10.2.0.115: docker+compose, git clone … ~/pulse, authorize deploy key, GHCR package public or docker login,
    docker compose -f deploy/docker-compose.homelab.yml up -d (see docs/deployment.md).
  • Drop docs/assets/status-page.gif (README embed is commented out until then).
  • git config core.hooksPath .githooks locally to activate the guardrail.

Test plan / verification

  • go build + go test ./... -count=1: api 18 pkgs ✓, agent ✓, cli ✓
  • UI npx tsc --noEmit
  • Workflows + compose + mkdocs YAML parse ✓; release-please-*.json valid ✓
  • docker compose -f deploy/docker-compose.homelab.yml config
  • commit-msg hook tested: rejects co-author/attribution, accepts clean ✓

@memetics19 memetics19 merged commit c9c8c3e into main Jun 20, 2026
6 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant