DevOpsGenDOCSGitHub

docker · github actions · kubernetes

DevOps scaffolding,
deterministically.

DevOpsGen reads your Go or Node.js project and writes a complete, opinionated DevOps baseline: hardened Dockerfile, GitHub Actions pipeline and ready-to-apply Kubernetes manifests — with dry-run plans, automatic backups and config validation built in.

DevOpsGen interactive wizard running in a Windows terminal, asking for the project stack
The interactive wizard — press Enter to accept smart defaults.

Why DevOpsGen

Deterministic

Same inputs, same bytes — every run. Machine-friendly for code review: a second generation with --force produces bit-identical files.

Safe by default

Existing files are never overwritten without --force. Overwrites get .bak backups, failed runs roll back automatically, and --dry-run prints the full plan first.

Validated output

Built-in validation checks Dockerfile structure, GitHub Actions workflow wiring and Kubernetes manifests (selector consistency, port ranges, Ingress paths) before anything ships.

Stack aware

Detects Go and Node.js projects (npm, pnpm, Express, Next.js, Vite, NestJS) from go.mod / package.json and tailors templates accordingly.

Everything a project needs on day one

One init command writes the whole baseline tree. Preview the real terminal output of every command below — all screenshots are live captures, not mockups.

generated in one command
$ devopsgen init --stack go --ci github-actions --registry ghcr --image you/myapp --port 8080
created 5 file(s), replaced 0 file(s) in .
exit code: 0
Terminal showing a successful DevOpsGen init run creating five files with exit code 0
init — first run creates the complete baseline and exits 0.
Terminal showing a DevOpsGen dry-run plan listing five create entries with exit code 0
--dry-run on a fresh project prints the pure create plan and exits 0.
Terminal showing a DevOpsGen dry-run force plan where every file would be replaced, exit code 0
--dry-run --force previews the full replace plan — still nothing written.

What gets generated

Template setFilesPurpose
docker (+ .dockerignore)DockerfileHardened multi-stage build (Go runs as USER 1000:1000 on a scratch base). For Node.js, RUN steps and install/prune commands follow the detected package manager (npm / pnpm) and lockfile. The generated .dockerignore keeps state, tool caches and env files out of the image.
github-actions.github/workflows/ci.ymlRuns your tests when a test command is configured, then builds and pushes the image with both the commit SHA tag and your alias tag, authenticating to the chosen registry via secrets.
kubernetesdeployment.yaml, service.yaml, optional ingress.yamlDNS 1035-safe resource names, container port wiring, resource requests and limits, health probes when --health-path is given, and an optional host-based Ingress (RFC 1123 hostname).

Explore the docs

Command cheatsheet

Terminal showing the full devopsgen help output listing all commands
devopsgen --help — all commands at a glance.
Terminal showing the devopsgen list output with available stacks, app types and registries
devopsgen list — supported stacks, app types and registries.
Terminal showing the devopsgen version output
devopsgen version.