Skip to content

Commit bd1e42a

Browse files
authored
Merge pull request #21 from cloudengine-labs/copilot/add-versioning-and-changelog
Add project versioning and changelog for v0.1.0
2 parents 5a24e32 + 95cd55c commit bd1e42a

4 files changed

Lines changed: 92 additions & 0 deletions

File tree

CHANGELOG.md

Lines changed: 49 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,49 @@
1+
# Changelog
2+
3+
All notable changes to this project will be documented in this file.
4+
5+
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
6+
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
7+
8+
---
9+
10+
## [0.1.0] - 2025-03-08
11+
12+
### Added
13+
14+
#### CLI (`cli/`)
15+
- **`devopsos` unified CLI** – single entry-point (`python -m cli.devopsos`) built with [Typer](https://typer.tiangolo.com/).
16+
- **`devopsos init`** – interactive wizard that scaffolds a `.devcontainer/devcontainer.json` tailored to the languages, CI/CD tools, and DevOps utilities you select.
17+
- **`devopsos scaffold gha`** – generates a multi-stage GitHub Actions workflow (lint → build → test → deploy).
18+
- **`devopsos scaffold jenkins`** – generates a `Jenkinsfile` with declarative pipeline stages.
19+
- **`devopsos scaffold gitlab`** – generates a `.gitlab-ci.yml` with Docker, Kubernetes, and deploy stages.
20+
- **`devopsos scaffold argocd`** – generates ArgoCD `Application` and `AppProject` manifests for GitOps deployments.
21+
- **`devopsos scaffold sre`** – generates Prometheus alert rules, Grafana dashboard JSON, and SLO manifests.
22+
- **`devopsos scaffold devcontainer`** – standalone devcontainer scaffolder with full tool-version control.
23+
- **`devopsos scaffold cicd`** – meta-scaffolder that runs both GHA and Jenkins generation in one step.
24+
- **`devopsos process-first`** – prints Process-First DevOps principles (Systems Thinking sections: what, mapping, tips, best-practices).
25+
- **`--version` / `-V` flag** – prints the current `devopsos` version and exits.
26+
27+
#### MCP Server (`mcp_server/`)
28+
- FastMCP-based server exposing every scaffold function as a native AI tool for Claude / ChatGPT plugins.
29+
- Tools: `generate_github_actions`, `generate_jenkins_pipeline`, `generate_gitlab_ci`, `generate_argocd_config`, `generate_sre_config`, `generate_devcontainer`, `generate_cicd_pipeline`.
30+
31+
#### Documentation & Examples
32+
- `README.md` – full project overview with quick-start, use-case table, and architecture diagram.
33+
- `README-USECASE-EXAMPLES.md` – end-to-end worked examples for every scaffold command.
34+
- `README-INDEX.md` – top-level navigation index for all documentation.
35+
- `CONTRIBUTING.md` – contribution guide with coding conventions and PR checklist.
36+
- `docs/` – extended Hugo-compatible documentation site sources.
37+
- `feature-announcements/` – HTML/Markdown feature-announcement pages.
38+
- `skills/` – reusable prompt-skill definitions for AI assistants.
39+
- `go-project/` – example Go micro-service wired to the DevOps-OS scaffold outputs.
40+
- `kubernetes/` – sample Kubernetes manifests referenced by the ArgoCD scaffold.
41+
- `scripts/examples/` – shell-script quick-start examples.
42+
43+
#### Development Environment
44+
- `.devcontainer/devcontainer.json` – ready-to-use GitHub Codespaces / VS Code dev-container with all Python, Docker, and Kubernetes tooling pre-installed.
45+
- `.github/workflows/ci.yml` – full CI pipeline (lint, unit tests, integration tests).
46+
- `.github/workflows/sanity.yml` – lightweight sanity-check workflow for PRs.
47+
- `.github/workflows/pages.yml` – GitHub Pages deployment workflow for the Hugo docs site.
48+
49+
[0.1.0]: https://github.com/cloudengine-labs/devops_os/releases/tag/v0.1.0

cli/__init__.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1 +1,2 @@
11
# Package marker for cli
2+
__version__ = "0.1.0"

cli/devopsos.py

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@
1515
import cli.scaffold_sre as scaffold_sre
1616
import cli.scaffold_devcontainer as scaffold_devcontainer
1717
import cli.process_first as process_first
18+
from cli import __version__
1819

1920
class ProcessFirstSection(str, enum.Enum):
2021
"""Valid sections for the process-first command."""
@@ -25,8 +26,26 @@ class ProcessFirstSection(str, enum.Enum):
2526
all = "all"
2627

2728

29+
def _version_callback(value: bool) -> None:
30+
if value:
31+
typer.echo(f"devopsos version {__version__}")
32+
raise typer.Exit()
33+
34+
2835
app = typer.Typer(help="Unified DevOps-OS CLI tool")
2936

37+
38+
@app.callback()
39+
def main(
40+
version: bool = typer.Option(
41+
False, "--version", "-V",
42+
callback=_version_callback,
43+
is_eager=True,
44+
help="Show the current version and exit.",
45+
),
46+
) -> None:
47+
"""DevOps-OS: automate your entire DevOps lifecycle."""
48+
3049
@app.command()
3150
def init(
3251
directory: str = typer.Option(".", "--dir", help="Target directory in which the .devcontainer folder will be created (defaults to the current directory)"),

cli/test_cli.py

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -570,3 +570,26 @@ def test_process_first_specific_section_no_usage_footer():
570570
f"--section {section} should not show the usage footer"
571571
)
572572

573+
574+
575+
# -- versioning ------------------------------------------------------------
576+
577+
def test_version_flag_short():
578+
"""-V prints 'devopsos version X.Y.Z' and exits 0."""
579+
result = _run(["-m", "cli.devopsos", "-V"])
580+
assert result.returncode == 0
581+
assert "devopsos version" in result.stdout
582+
583+
584+
def test_version_flag_long():
585+
"""--version prints 'devopsos version X.Y.Z' and exits 0."""
586+
result = _run(["-m", "cli.devopsos", "--version"])
587+
assert result.returncode == 0
588+
assert "devopsos version" in result.stdout
589+
590+
591+
def test_version_matches_package():
592+
"""Version reported by --version matches cli.__version__."""
593+
from cli import __version__
594+
result = _run(["-m", "cli.devopsos", "--version"])
595+
assert __version__ in result.stdout

0 commit comments

Comments
 (0)