No description
Find a file
Snider f9eb54b856 refactor: modernise to Go 1.26 — iterators, slices, maps, strings
- Add ParsePlaybookIter, ParseTasksIter, GetHostsIter, AllHostsIter (ansible)
- Add ListTemplatesIter (container), TargetsIter (build), LanguagesIter (sdk)
- Replace sort.Slice with slices.SortFunc across cmd/dev, cmd/qa, cmd/monitor, cmd/setup
- Replace manual map-key-sort with slices.Sorted(maps.Keys(...))
- Replace strings.Split with strings.SplitSeq where result is iterated (devkit)
- Replace range-over-int in complexity_test, ansible/modules, devops
- Remove redundant manual min() in favour of built-in
- 22 files, all tests pass

Co-Authored-By: Gemini <noreply@google.com>
Co-Authored-By: Virgil <virgil@lethean.io>
2026-02-23 06:24:37 +00:00
.forgejo/workflows feat: absorb core/ci commands + add reusable workflows 2026-02-21 21:01:46 +00:00
.woodpecker feat: add Woodpecker CI pipelines from CLI 2026-02-21 21:18:35 +00:00
ansible refactor: modernise to Go 1.26 — iterators, slices, maps, strings 2026-02-23 06:24:37 +00:00
build refactor: modernise to Go 1.26 — iterators, slices, maps, strings 2026-02-23 06:24:37 +00:00
cmd refactor: modernise to Go 1.26 — iterators, slices, maps, strings 2026-02-23 06:24:37 +00:00
container refactor: modernise to Go 1.26 — iterators, slices, maps, strings 2026-02-23 06:24:37 +00:00
deploy feat: extract devops packages from core/go 2026-02-16 15:21:39 +00:00
devkit refactor: modernise to Go 1.26 — iterators, slices, maps, strings 2026-02-23 06:24:37 +00:00
devops refactor: modernise to Go 1.26 — iterators, slices, maps, strings 2026-02-23 06:24:37 +00:00
docs fix: remove duplicate nested plans directory 2026-02-21 21:17:02 +00:00
infra feat(infra): Phase 2 — API client abstraction, retry logic, rate limiting 2026-02-20 04:11:08 +00:00
playbooks feat: add Ansible playbooks and design plans from CLI 2026-02-21 21:16:52 +00:00
release refactor: modernise to Go 1.26 — iterators, slices, maps, strings 2026-02-23 06:24:37 +00:00
sdk refactor: modernise to Go 1.26 — iterators, slices, maps, strings 2026-02-23 06:24:37 +00:00
CLAUDE.md fix(go.mod): correct replace path ../core to ../go 2026-02-20 15:29:53 +00:00
go.mod chore: refresh go.sum after upstream tag updates 2026-02-22 23:36:25 +00:00
go.sum refactor: modernise to Go 1.26 — iterators, slices, maps, strings 2026-02-23 06:24:37 +00:00
README.md docs: add README with quick start and docs links 2026-02-20 15:11:26 +00:00

go-devops

Infrastructure and build automation library for the Lethean ecosystem. Provides a native Go Ansible playbook executor (~30 modules over SSH without shelling out), a multi-target build pipeline with project type auto-detection (Go, Wails, Docker, C++, LinuxKit, Taskfile), code signing (macOS codesign, GPG, Windows signtool), release orchestration with changelog generation and eight publisher backends (GitHub Releases, Docker, Homebrew, npm, AUR, Scoop, Chocolatey, LinuxKit), Hetzner Cloud and Robot API clients, CloudNS DNS management, container/VM management via QEMU and Hyperkit, an OpenAPI SDK generator (TypeScript, Python, Go, PHP), and a developer toolkit with cyclomatic complexity analysis, vulnerability scanning, and coverage trending.

Module: forge.lthn.ai/core/go-devops Licence: EUPL-1.2 Language: Go 1.25

Quick Start

import (
    "forge.lthn.ai/core/go-devops/ansible"
    "forge.lthn.ai/core/go-devops/build"
    "forge.lthn.ai/core/go-devops/release"
)

// Run an Ansible playbook over SSH
pb, _ := ansible.ParsePlaybook("playbooks/deploy.yml")
inv, _ := ansible.ParseInventory("inventory.yml")
pb.Run(ctx, inv)

// Build and release
artifacts, _ := build.Build(ctx, ".")
release.Publish(ctx, releaseCfg, false)

Documentation

  • Architecture — Ansible integration, build pipeline, infrastructure APIs, release workflow, devkit, SDK generation
  • Development Guide — building, testing, coding standards
  • Project History — completed phases and known limitations

Build & Test

go test ./...
go test -race ./...
go vet ./...
go build ./...

Licence

European Union Public Licence 1.2 — see LICENCE for details.