Add "Home"
parent
d9653d5b41
commit
7deb88f51a
1 changed files with 84 additions and 0 deletions
84
Home.md
Normal file
84
Home.md
Normal file
|
|
@ -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
|
||||
Loading…
Add table
Reference in a new issue