Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
17 changes: 16 additions & 1 deletion .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -83,6 +83,19 @@ jobs:
- 'index.html'
- 'README.md'

# ── Version Consistency ──────────────────────────────────────
version-check:
name: "Version Consistency"
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/setup-python@v5
with:
python-version: '3.12'
- name: Run Version Check
run: |
PYTHONPATH=src python3 tests/test_version.py

# ── Base image — runs per distro ────────────────────────────
# Re-runs when generate.js changes or on workflow_dispatch.
# Humble and Jazzy are tested independently because their
Expand Down Expand Up @@ -279,6 +292,7 @@ jobs:
if: always()
needs:
- changes
- version-check
- base-humble
- base-humble-desktop
- base-jazzy
Expand All @@ -294,7 +308,8 @@ jobs:
steps:
- name: Check results
run: |
declare -A results
results[changes]="${{ needs.changes.result }}"
results[version-check]="${{ needs.version-check.result }}"
results[base-humble]="${{ needs.base-humble.result }}"
results[base-humble-desktop]="${{ needs.base-humble-desktop.result }}"
results[base-jazzy]="${{ needs.base-jazzy.result }}"
Expand Down
11 changes: 9 additions & 2 deletions .github/workflows/publish.yml
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,7 @@ jobs:
pip install -e .
- name: Run tests
run: |
python3 tests/test_version.py
python3 tests/test_parity.py

build:
Expand All @@ -33,6 +34,7 @@ jobs:
runs-on: ubuntu-latest
permissions:
id-token: write # Mandatory for Trusted Publishing
contents: write # Mandatory for GitHub Releases
steps:
- uses: actions/checkout@v4
- name: Set up Python
Expand All @@ -46,6 +48,11 @@ jobs:
- name: Publish to PyPI
uses: pypa/gh-action-pypi-publish@release/v1
with:
# No token needed when using Trusted Publishing (OIDC)
# You MUST enable this in PyPI Project Settings first.
print-hash: true
- name: Create GitHub Release
uses: softprops/action-gh-release@v2
with:
files: dist/*
generate_release_notes: true
draft: false
prerelease: false
15 changes: 15 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,21 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0

## [Unreleased]

## [1.1.0] - 2026-03-25

### Added
- Centralized project versioning using `config.json` as the single source of truth.
- Integrated `hatch-regex` for dynamic versioning in `pyproject.toml`.
- Added a comprehensive version consistency test suite (`tests/test_version.py`).
- Added `tests/sync_version.py` for automated version management.
- Added GitHub Actions for automated publishing to GitHub Releases.

### Changed
- Refactored `index.html` and CLI to dynamically consume version from `config.json`.

### Removed
- Legacy Node-based CLI implementation in favor of the Python-based CLI.

## [1.0.2] - 2026-03-24

### Added
Expand Down
2 changes: 1 addition & 1 deletion CI/generate.js
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,7 @@ const userType = getArg('usertype', 'user'); // Changed from 'custom' to match c

// ── Load Config & Init Core ───────────────────────────────────
const _ROOT = path.join(__dirname, '..');
const configPath = path.join(_ROOT, 'data', 'config.json');
const configPath = path.join(_ROOT, 'src', 'ros2_dockergen', 'data', 'config.json');
const configData = JSON.parse(fs.readFileSync(configPath, 'utf8'));
CORE.init(configData);

Expand Down
11 changes: 7 additions & 4 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,9 +1,12 @@
# 🤖 ros2-dockergen

[![PyPI version](https://img.shields.io/pypi/v/ros2-dockergen.svg)](https://pypi.org/project/ros2-dockergen/)
[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](LICENSE)
[![Python 3.10+](https://img.shields.io/badge/python-3.10+-blue.svg)](https://www.python.org/downloads/)
[![Web UI](https://img.shields.io/badge/Web-Interactive_UI-00ff88.svg)](https://ppswaroopa.github.io/ros2-dockergen/)
<p align="center">
<a href="https://github.com/ppswaroopa/ros2-dockergen/actions/workflows/ci.yml"><img src="https://github.com/ppswaroopa/ros2-dockergen/actions/workflows/ci.yml/badge.svg" alt="CI"></a>
<a href="https://pypi.org/project/ros2-dockergen/"><img src="https://img.shields.io/pypi/v/ros2-dockergen.svg" alt="PyPI version"></a>
<a href="LICENSE"><img src="https://img.shields.io/badge/License-MIT-yellow.svg" alt="License: MIT"></a>
<a href="https://www.python.org/downloads/"><img src="https://img.shields.io/badge/python-3.10+-blue.svg" alt="Python 3.10+"></a>
<a href="https://ppswaroopa.github.io/ros2-dockergen/"><img src="https://img.shields.io/badge/Web-Interactive_UI-00ff88.svg" alt="Web UI"></a>
</p>

<br />
<p align="center">
Expand Down
Loading
Loading