From 7deb88f51aa38a14bdc3d66ac0981c0db1eb38ca Mon Sep 17 00:00:00 2001 From: Virgil Date: Thu, 19 Feb 2026 16:59:42 +0000 Subject: [PATCH] Add "Home" --- Home.md | 84 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 84 insertions(+) create mode 100644 Home.md diff --git a/Home.md b/Home.md new file mode 100644 index 0000000..ec2d134 --- /dev/null +++ b/Home.md @@ -0,0 +1,84 @@ +# go-devops + +> Portable dev environment orchestration, multi-language builds, Ansible execution, and infrastructure provisioning. + +**Module**: `forge.lthn.ai/core/go-devops` +**Go**: 1.25.5 +**Licence**: EUPL-1.2 + +## Overview + +go-devops provides a unified toolkit for development environment management, build orchestration, and infrastructure provisioning. It supports LinuxKit-based portable VMs, multi-language project detection with cross-compilation, Ansible playbook execution, OpenAPI SDK generation, and cloud provisioning for Hetzner and CloudNS. + +## Package Structure + +| Package | Purpose | +|---------|---------| +| `devops/` | LinuxKit dev environment lifecycle (image pull, cache, verify) | +| `ansible/` | Playbook execution, inventory parsing, SSH connection pooling | +| `build/` | Multi-language project detection and cross-compilation | +| `container/` | LinuxKit/QEMU/Hyperkit VM management | +| `sdk/` | OpenAPI spec codegen for 6 languages + breaking change detection | +| `devkit/` | Developer toolkit utilities | +| `infra/` | Cloud provisioning (Hetzner servers, CloudNS DNS) | + +## Quick Start + +```go +import ( + "forge.lthn.ai/core/go-devops/build" + "forge.lthn.ai/core/go-devops/ansible" + "forge.lthn.ai/core/go-devops/container" +) + +// Auto-detect project type and build +cfg := build.Config{ProjectDir: "./my-project", OutputDir: "./dist"} +builder := build.New(cfg) +artifacts, err := builder.Build(ctx) + +// Run an Ansible playbook +executor := ansible.NewExecutor("/path/to/playbooks") +executor.SetInventory("/path/to/inventory.yml") +result, err := executor.Run(ctx, "deploy.yml") + +// Start a LinuxKit VM +mgr := container.NewLinuxKitManager("qemu") +ctr, err := mgr.Run(ctx, container.RunOptions{ + Name: "dev-env", + Memory: "4G", + CPUs: 4, +}) +``` + +## API Overview + +| Type | Package | Description | +|------|---------|-------------| +| `Config` | `build` | Build settings (project dir, output, name, version, ldflags) | +| `ProjectType` | `build` | Detected project type (go, node, php, etc.) | +| `Target` | `build` | OS/Arch cross-compilation target | +| `Artifact` | `build` | Build output with path, checksum | +| `Executor` | `ansible` | Playbook runner with inventory and results | +| `Inventory` | `ansible` | Host groups and variables | +| `Task` / `TaskResult` | `ansible` | Playbook task definition and execution result | +| `Container` | `container` | VM instance with status, PID, ports | +| `Manager` | `container` | Interface for Run, Stop, Logs, Exec, Inspect | +| `DevOps` | `devops` | Top-level environment lifecycle | +| `HetznerProvisioner` | `infra` | Cloud server provisioning | +| `CloudNSManager` | `infra` | DNS record management | + +## Dependencies + +| Module | Purpose | +|--------|---------| +| `github.com/Snider/Borg` | Secure blob/pointer storage for secrets | +| `github.com/getkin/kin-openapi` | OpenAPI 3.x spec parsing | +| `github.com/oasdiff/oasdiff` | API breaking change detection | +| `github.com/spf13/cobra` | CLI command structure | +| `golang.org/x/crypto` | SSH client for Ansible connections | + +## Pages + +- [[Build-System]] — Multi-language project detection, cross-compilation, and SDK generation +- [[Ansible-Executor]] — Playbook execution, inventory, and SSH management +- [[Infrastructure]] — Container management, Hetzner provisioning, and CloudNS DNS