Skip to content

Commit 65f3963

Browse files
authored
Merge pull request #10 from cloudengine-labs/copilot/update-cli-option-process-first
fix: resolve click/cel-agents conflict, add process-first usage footer, and sync GitHub Pages docs
2 parents cc22b9a + 8db1506 commit 65f3963

16 files changed

Lines changed: 881 additions & 15 deletions

README-INDEX.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@ Welcome to the DevOps-OS documentation! This set of guides will help you use and
99
| [**CLI Commands Reference**](docs/CLI-COMMANDS-REFERENCE.md) | **Complete reference** — every option, input file, and output location for all CLI commands |
1010
| [Getting Started](docs/GETTING-STARTED.md) | First pipeline in 5 minutes |
1111
| [Quick Start Guide](docs/DEVOPS-OS-QUICKSTART.md) | Essential CLI commands for all functionality |
12+
| [Process-First Philosophy](docs/PROCESS-FIRST.md) | What Process-First means, how it maps to DevOps-OS, and AI learning tips for beginners |
1213
| [GitHub Actions Generator](docs/GITHUB-ACTIONS-README.md) | Generate and customize GitHub Actions workflows |
1314
| [GitLab CI Generator](docs/GITLAB-CI-README.md) | Generate and customize GitLab CI pipelines |
1415
| [Jenkins Pipeline Generator](docs/JENKINS-PIPELINE-README.md) | Generate and customize Jenkins pipelines |

README.md

Lines changed: 27 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,7 @@ DevOps-OS is an open-source DevOps automation platform that scaffolds production
2929
| 📊 **SRE Config Generator** | Prometheus alert rules, Grafana dashboards, and SLO manifests |
3030
| 🤖 **MCP Server** | Plug DevOps-OS tools into Claude or ChatGPT as native AI skills |
3131
| 🛠️ **Dev Container** | Pre-configured multi-language environment (Python · Java · Go · JavaScript) |
32+
| 🔄 **Process-First** | Built-in education on the Process-First SDLC philosophy and how it maps to every DevOps-OS tool |
3233

3334
---
3435

@@ -90,7 +91,28 @@ source .venv/bin/activate # macOS / Linux
9091
pip install -r cli/requirements.txt
9192
```
9293

93-
### 2 — Generate a GitHub Actions workflow
94+
### 2 — Learn the Process-First philosophy *(recommended first step)*
95+
96+
DevOps-OS is built on the **Process-First** SDLC philosophy from [cloudenginelabs.io](https://cloudenginelabs.io). Run the `process-first` command to understand *why* each tool exists before you start using it:
97+
98+
```bash
99+
# Full overview — what Process-First is, how it maps to DevOps-OS, and learning tips
100+
python -m cli.devopsos process-first
101+
102+
# Just the 5 core principles
103+
python -m cli.devopsos process-first --section what
104+
105+
# Table: which scaffold command encodes which principle
106+
python -m cli.devopsos process-first --section mapping
107+
108+
# AI prompts and book recommendations for beginners
109+
python -m cli.devopsos process-first --section tips
110+
```
111+
112+
> **Tip:** Run `--section mapping` to see exactly which `devopsos scaffold` command to use for each DevOps goal before generating any config.
113+
> See [docs/PROCESS-FIRST.md](docs/PROCESS-FIRST.md) for the full reference.
114+
115+
### 3 — Generate a GitHub Actions workflow
94116

95117
```bash
96118
# Complete CI/CD for a Python + JavaScript project
@@ -100,7 +122,7 @@ python -m cli.scaffold_gha --name my-app --languages python,javascript --type co
100122
python -m cli.scaffold_gha --name my-app --languages python --kubernetes --k8s-method kustomize
101123
```
102124

103-
### 3 — Generate other pipelines & configs
125+
### 4 — Generate other pipelines & configs
104126

105127
```bash
106128
# Jenkins pipeline → Jenkinsfile
@@ -127,7 +149,7 @@ python kubernetes/k8s-config-generator.py --name my-app --image ghcr.io/myorg/my
127149

128150
> See [CLI Commands Reference](docs/CLI-COMMANDS-REFERENCE.md) for the full option tables and every default output path.
129151
130-
### 4 — Interactive wizard (all-in-one)
152+
### 5 — Interactive wizard (all-in-one)
131153

132154
```bash
133155
python -m cli.devopsos init # interactive project configurator
@@ -139,7 +161,7 @@ python -m cli.devopsos scaffold sre # scaffold SRE configs
139161
python -m cli.devopsos scaffold devcontainer # scaffold dev container config
140162
```
141163

142-
### 5 — Use with AI (MCP Server)
164+
### 6 — Use with AI (MCP Server)
143165

144166
```bash
145167
pip install -r mcp_server/requirements.txt
@@ -239,6 +261,7 @@ You can also customize `.devcontainer/devcontainer.env.json` directly to enable
239261
|-------|-------------|
240262
| [🚀 Getting Started](docs/GETTING-STARTED.md) | Easy step-by-step guide — **start here** |
241263
| [📖 CLI Commands Reference](docs/CLI-COMMANDS-REFERENCE.md) | **Complete reference** — every option, input file, and output location |
264+
| [🔄 Process-First Philosophy](docs/PROCESS-FIRST.md) | What Process-First means, how it maps to DevOps-OS, and AI learning tips |
242265
| [📦 Dev Container Setup](docs/DEVOPS-OS-README.md) | Set up and customize the dev container |
243266
| [⚡ Quick Start Reference](docs/DEVOPS-OS-QUICKSTART.md) | Essential CLI commands for all features |
244267
| [⚙️ GitHub Actions Generator](docs/GITHUB-ACTIONS-README.md) | Generate and customize GitHub Actions workflows |

cli/devopsos.py

Lines changed: 42 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
import enum
12
import typer
23
from InquirerPy import inquirer
34
import json
@@ -12,6 +13,15 @@
1213
import cli.scaffold_argocd as scaffold_argocd
1314
import cli.scaffold_sre as scaffold_sre
1415
import cli.scaffold_devcontainer as scaffold_devcontainer
16+
import cli.process_first as process_first
17+
18+
class ProcessFirstSection(str, enum.Enum):
19+
"""Valid sections for the process-first command."""
20+
what = "what"
21+
mapping = "mapping"
22+
tips = "tips"
23+
all = "all"
24+
1525

1626
app = typer.Typer(help="Unified DevOps-OS CLI tool")
1727

@@ -151,5 +161,37 @@ def scaffold(
151161
else:
152162
typer.echo("Unknown scaffold target.")
153163

164+
@app.command("process-first")
165+
def process_first_cmd(
166+
section: ProcessFirstSection = typer.Option(
167+
ProcessFirstSection.all,
168+
help=(
169+
"Section to display:\n\n"
170+
" 'what' — What Process-First is and its 5 core principles\n\n"
171+
" 'mapping' — How each principle maps to a devopsos scaffold command\n\n"
172+
" 'tips' — AI prompts and book recommendations for DevOps beginners\n\n"
173+
" 'all' — All sections combined (default)"
174+
),
175+
show_choices=True,
176+
),
177+
):
178+
"""Learn about the Process-First SDLC philosophy and how it maps to DevOps-OS tooling.
179+
180+
\b
181+
Quick invocation guide:
182+
183+
python -m cli.devopsos process-first # full overview
184+
python -m cli.devopsos process-first --section what # core principles
185+
python -m cli.devopsos process-first --section mapping # tool mapping table
186+
python -m cli.devopsos process-first --section tips # AI prompts for beginners
187+
188+
You can also run the module directly:
189+
190+
python -m cli.process_first
191+
python -m cli.process_first --section mapping
192+
"""
193+
process_first.display(section.value)
194+
195+
154196
if __name__ == "__main__":
155197
app()

cli/process_first.py

Lines changed: 225 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,225 @@
1+
#!/usr/bin/env python3
2+
"""
3+
DevOps-OS: Process-First Ideology
4+
5+
cloudenginelabs.io is a process-first SDLC automation company.
6+
This module educates users on what "Process First" means, how it maps
7+
to DevOps-OS tooling, and provides beginner tips for further learning.
8+
"""
9+
10+
import argparse
11+
import sys
12+
13+
14+
# ---------------------------------------------------------------------------
15+
# Content
16+
# ---------------------------------------------------------------------------
17+
18+
PROCESS_FIRST_SUMMARY = """\
19+
╔══════════════════════════════════════════════════════════════════════════════╗
20+
║ 🔄 PROCESS-FIRST | cloudenginelabs.io ║
21+
╚══════════════════════════════════════════════════════════════════════════════╝
22+
23+
"Tools are only as good as the processes that govern them."
24+
— Saravanan Gnanagur, Founder, CloudEngineLabs
25+
26+
"""
27+
28+
WHAT_IS_PROCESS_FIRST = """\
29+
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
30+
WHAT IS PROCESS-FIRST?
31+
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
32+
33+
Process-First is an engineering philosophy that places well-defined,
34+
repeatable SDLC (Software Development Life Cycle) processes at the
35+
centre of every engineering decision — before selecting tools, platforms,
36+
or frameworks.
37+
38+
Core principles:
39+
40+
1. DEFINE before you BUILD
41+
Document the "why" and "what" of every workflow before writing a
42+
single line of pipeline code.
43+
44+
2. STANDARDISE before you SCALE
45+
Create golden-path templates (CI/CD, GitOps, SRE) that every team
46+
can adopt without reinventing the wheel.
47+
48+
3. AUTOMATE what is REPEATABLE
49+
If a process is done more than twice, automate it. Automation
50+
should encode the process, not bypass it.
51+
52+
4. OBSERVE and ITERATE
53+
Every automated process must produce measurable outcomes (SLOs,
54+
SLAs, error budgets) so teams can improve continuously.
55+
56+
5. CULTURE over TOOLING
57+
Processes exist to create shared understanding and accountability.
58+
The right culture makes any toolchain succeed; the wrong culture
59+
makes the best toolchain fail.
60+
61+
"""
62+
63+
MAPPING_TO_TOOLING = """\
64+
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
65+
HOW PROCESS-FIRST MAPS TO DEVOPS-OS TOOLING
66+
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
67+
68+
┌─────────────────────────────┬──────────────────────────────────────────┐
69+
│ Process-First Principle │ DevOps-OS Tooling │
70+
├─────────────────────────────┼──────────────────────────────────────────┤
71+
│ Define before you build │ `devopsos scaffold cicd/gha/gitlab` │
72+
│ │ Interactive wizards capture intent │
73+
│ │ before generating any config file. │
74+
├─────────────────────────────┼──────────────────────────────────────────┤
75+
│ Standardise before scale │ Golden-path scaffold templates for │
76+
│ │ GitHub Actions, GitLab CI, Jenkins, │
77+
│ │ ArgoCD, and Flux ensure every team │
78+
│ │ starts from a reviewed baseline. │
79+
├─────────────────────────────┼──────────────────────────────────────────┤
80+
│ Automate the repeatable │ `devopsos scaffold argocd` encodes │
81+
│ │ the GitOps sync process as code; │
82+
│ │ `devopsos scaffold devcontainer` │
83+
│ │ encodes the dev-environment setup. │
84+
├─────────────────────────────┼──────────────────────────────────────────┤
85+
│ Observe and iterate │ `devopsos scaffold sre` generates │
86+
│ │ Prometheus rules, Grafana dashboards, │
87+
│ │ and SLO manifests to close the │
88+
│ │ measure-improve feedback loop. │
89+
├─────────────────────────────┼──────────────────────────────────────────┤
90+
│ Culture over tooling │ MCP server skills let AI assistants │
91+
│ │ (Claude, ChatGPT) coach engineers on │
92+
│ │ DevOps best practices — not just │
93+
│ │ generate config files. │
94+
└─────────────────────────────┴──────────────────────────────────────────┘
95+
96+
"""
97+
98+
BEGINNER_TIPS = """\
99+
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
100+
TIPS FOR DEVOPS BEGINNERS — LEARN MORE WITH AI TOOLS
101+
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
102+
103+
Use AI tools like Claude, ChatGPT, or Gemini to deepen your understanding
104+
of process-first DevOps. Here are prompts you can try right now:
105+
106+
📌 Understanding the ideology
107+
"Explain the process-first approach to SDLC automation and why
108+
defining processes before choosing tools leads to better outcomes."
109+
110+
📌 CI/CD pipelines
111+
"What are the key stages of a production-grade CI/CD pipeline? Give
112+
me a process checklist before I start writing any pipeline code."
113+
114+
📌 GitOps and ArgoCD
115+
"Walk me through the GitOps process: from code commit to production
116+
deployment using ArgoCD. What processes must exist before ArgoCD
117+
adds value?"
118+
119+
📌 SRE fundamentals
120+
"What is the SRE process for setting SLOs and error budgets?
121+
How do I translate business requirements into Prometheus alert rules?"
122+
123+
📌 Dev Containers
124+
"What developer-environment standardisation process should a team
125+
follow before adopting Dev Containers?"
126+
127+
📌 Further reading (ask your AI assistant for summaries of)
128+
• The DevOps Handbook — Gene Kim et al.
129+
• Site Reliability Engineering — Google SRE book (sre.google/books)
130+
• Accelerate — Nicole Forsgren et al.
131+
• LinkedIn posts by Saravanan Gnanagur on process-first DevOps
132+
(search: "Saravanan Gnanagur process first" on LinkedIn)
133+
134+
💡 Pro tip — Use DevOps-OS with AI:
135+
Install the DevOps-OS MCP server, connect it to Claude or ChatGPT,
136+
and ask:
137+
"Using the DevOps-OS tools, scaffold a process-first CI/CD setup
138+
for a Python microservice with GitOps delivery and SRE observability."
139+
140+
"""
141+
142+
USAGE_FOOTER = """\
143+
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
144+
HOW TO USE THIS COMMAND
145+
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
146+
147+
python -m cli.devopsos process-first # full overview (this output)
148+
python -m cli.devopsos process-first --section what # 5 core principles only
149+
python -m cli.devopsos process-first --section mapping # devopsos scaffold command map
150+
python -m cli.devopsos process-first --section tips # AI prompts for beginners
151+
python -m cli.devopsos process-first --help # full option reference
152+
153+
You can also run the standalone module:
154+
155+
python -m cli.process_first [--section what|mapping|tips|all]
156+
157+
📖 Full docs: docs/PROCESS-FIRST.md
158+
159+
"""
160+
161+
FULL_TEXT = (
162+
PROCESS_FIRST_SUMMARY
163+
+ WHAT_IS_PROCESS_FIRST
164+
+ MAPPING_TO_TOOLING
165+
+ BEGINNER_TIPS
166+
)
167+
168+
169+
# ---------------------------------------------------------------------------
170+
# Section helpers (used by --section flag)
171+
# ---------------------------------------------------------------------------
172+
173+
SECTIONS = {
174+
"what": PROCESS_FIRST_SUMMARY + WHAT_IS_PROCESS_FIRST,
175+
"mapping": PROCESS_FIRST_SUMMARY + MAPPING_TO_TOOLING,
176+
"tips": PROCESS_FIRST_SUMMARY + BEGINNER_TIPS,
177+
"all": FULL_TEXT + USAGE_FOOTER,
178+
}
179+
180+
181+
# ---------------------------------------------------------------------------
182+
# Display logic
183+
# ---------------------------------------------------------------------------
184+
185+
def display(section: str = "all") -> None:
186+
"""Print the requested section to stdout."""
187+
if section not in SECTIONS:
188+
raise ValueError(f"Unknown section '{section}'. Choose from: {', '.join(SECTIONS)}")
189+
print(SECTIONS[section])
190+
191+
192+
# ---------------------------------------------------------------------------
193+
# Argument parsing
194+
# ---------------------------------------------------------------------------
195+
196+
def parse_arguments(argv=None):
197+
parser = argparse.ArgumentParser(
198+
description="Learn about the Process-First SDLC philosophy and how it maps to DevOps-OS tooling.",
199+
)
200+
parser.add_argument(
201+
"--section",
202+
choices=list(SECTIONS.keys()),
203+
default="all",
204+
help=(
205+
"Which section to display: "
206+
"'what' (ideology overview), "
207+
"'mapping' (tooling map), "
208+
"'tips' (beginner AI prompts), "
209+
"or 'all' (default)."
210+
),
211+
)
212+
return parser.parse_args(argv)
213+
214+
215+
# ---------------------------------------------------------------------------
216+
# Entry point
217+
# ---------------------------------------------------------------------------
218+
219+
def main(argv=None):
220+
args = parse_arguments(argv)
221+
display(args.section)
222+
223+
224+
if __name__ == "__main__":
225+
main()

cli/requirements.txt

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1-
typer
1+
typer>=0.9.0,<0.23.0
2+
click>=8.0.0,<8.2
23
InquirerPy
34
pyyaml

0 commit comments

Comments
 (0)