GRM-42: fix: clean up infrastructure-only releases and fix release classification
This commit is contained in:
@@ -2,62 +2,6 @@
|
||||
|
||||
All notable changes to this project will be documented in this file.
|
||||
|
||||
## [0.4.0] - 2026-06-21
|
||||
|
||||
### Features
|
||||
|
||||
- Smart CI and release skipping for workflow-only changes
|
||||
|
||||
### Bug Fixes
|
||||
|
||||
- Set PYTHONPATH=. for release.py to find scripts.ci module (#32)
|
||||
- Use content_base64 for Gitea wiki API, add --verify flag (#33)
|
||||
- Wiki links, add --strict integrity check for wiki sync (#34)
|
||||
|
||||
### Other
|
||||
|
||||
- V0.3.2
|
||||
|
||||
### Refactor
|
||||
|
||||
- Split CI scripts, fix release PYTHONPATH, dynamic runner discovery
|
||||
|
||||
## [0.3.2] - 2026-06-21
|
||||
|
||||
### Bug Fixes
|
||||
|
||||
- Set PYTHONPATH=. for release.py to find scripts.ci module (#32)
|
||||
|
||||
### Other
|
||||
|
||||
- Smart CI and release skipping for workflow-only changes
|
||||
- Split CI scripts, fix release PYTHONPATH, dynamic runner discovery
|
||||
|
||||
## [0.3.1] - 2026-06-21
|
||||
|
||||
### Bug Fixes
|
||||
|
||||
- Use correct Gitea 1.26 wiki API endpoints
|
||||
|
||||
## [0.3.0] - 2026-06-21
|
||||
|
||||
### Features
|
||||
|
||||
- Implement documentation-as-code with wiki sync and doc-coverage
|
||||
|
||||
## [0.2.2] - 2026-06-21
|
||||
|
||||
### Bug Fixes
|
||||
|
||||
- Enforce tests pass before tagging a release
|
||||
- Bypass commit-msg hook for release commits
|
||||
|
||||
## [0.2.1] - 2026-06-21
|
||||
|
||||
### Bug Fixes
|
||||
|
||||
- Strip git-cliff header from CHANGELOG.md updates
|
||||
|
||||
## [0.2.0] - 2026-06-21
|
||||
|
||||
### Features
|
||||
|
||||
+2
-2
@@ -50,7 +50,7 @@ gitea_runner_manager = ["translations.json"]
|
||||
[tool.pytest.ini_options]
|
||||
testpaths = ["tests"]
|
||||
pythonpath = ["src", "."]
|
||||
addopts = "--cov=src/gitea_runner_manager --cov=scripts --cov=scripts/ci --cov-report=term-missing --cov-fail-under=100"
|
||||
addopts = "--cov=src/gitea_runner_manager --cov=scripts --cov-report=term-missing --cov-fail-under=100"
|
||||
markers = [
|
||||
"integration: marks tests as integration tests (not counted in coverage)",
|
||||
]
|
||||
@@ -68,6 +68,6 @@ quote-style = "double"
|
||||
indent-style = "space"
|
||||
|
||||
[tool.pyright]
|
||||
include = ["src", "scripts", "scripts/ci"]
|
||||
include = ["src", "scripts"]
|
||||
pythonVersion = "3.12"
|
||||
strict = ["src/gitea_runner_manager"]
|
||||
|
||||
@@ -17,9 +17,8 @@ Classification strategy (safe-by-default):
|
||||
|
||||
Workflow-only paths (infrastructure → no release needed):
|
||||
- .gitea/workflows/** — Gitea Actions workflows
|
||||
- scripts/ci/** — CI/CD automation scripts
|
||||
- scripts/*.sh — Shell scripts (setup, molecule runners)
|
||||
- scripts/__init__.py — Package init for scripts
|
||||
- scripts/** — All scripts (CI/CD, dev tools, setup)
|
||||
- src/gitea_runner_manager/__init__.py — Version file (release artifact)
|
||||
- docs/** — Documentation
|
||||
- tests/** — Test files
|
||||
- hooks/** — Git hooks
|
||||
@@ -38,7 +37,7 @@ Classification strategy (safe-by-default):
|
||||
|
||||
Everything else is user-facing (tool changes → release needed),
|
||||
including but not limited to:
|
||||
- src/gitea_runner_manager/** — Python CLI source
|
||||
- src/gitea_runner_manager/*.py — Python CLI source (except __init__.py)
|
||||
- ansible/** — Ansible role
|
||||
- pyproject.toml — Package metadata
|
||||
- Any new file type not in the allowlist
|
||||
@@ -63,10 +62,12 @@ WORKFLOW_ONLY_PATTERNS = frozenset(
|
||||
[
|
||||
# CI/CD infrastructure
|
||||
".gitea/",
|
||||
"scripts/ci/",
|
||||
"scripts/setup.sh",
|
||||
"scripts/molecule_all.sh",
|
||||
"scripts/__init__.py",
|
||||
# All scripts are infrastructure (CI/CD, dev tools, setup)
|
||||
# User-facing code lives in src/gitea_runner_manager/
|
||||
"scripts/",
|
||||
# Version file — only contains __version__, not user-facing code.
|
||||
# Version bumps are a release artifact, not a feature.
|
||||
"src/gitea_runner_manager/__init__.py",
|
||||
# Documentation
|
||||
"docs/",
|
||||
"AGENTS.md",
|
||||
|
||||
@@ -1,3 +1,3 @@
|
||||
"""Gitea Runner Manager — lean CLI for managing Gitea Actions runners."""
|
||||
|
||||
__version__ = "0.4.0"
|
||||
__version__ = "0.2.0"
|
||||
|
||||
@@ -34,12 +34,12 @@ class TestIsUserFacing:
|
||||
def test_ci_scripts_are_not_user_facing(self) -> None:
|
||||
assert is_user_facing("scripts/ci/release.py") is False
|
||||
|
||||
def test_dev_scripts_are_user_facing(self) -> None:
|
||||
"""Dev scripts (check_test_speed, configure_repo) are NOT in the
|
||||
workflow-only allowlist, so they default to user-facing."""
|
||||
assert is_user_facing("scripts/check_test_speed.py") is True
|
||||
assert is_user_facing("scripts/configure_repo.py") is True
|
||||
assert is_user_facing("scripts/install_checkmake.py") is True
|
||||
def test_dev_scripts_are_not_user_facing(self) -> None:
|
||||
"""All scripts under scripts/ are infrastructure (CI/CD, dev tools).
|
||||
User-facing code lives in src/gitea_runner_manager/."""
|
||||
assert is_user_facing("scripts/check_test_speed.py") is False
|
||||
assert is_user_facing("scripts/configure_repo.py") is False
|
||||
assert is_user_facing("scripts/install_checkmake.py") is False
|
||||
|
||||
def test_shell_scripts_are_not_user_facing(self) -> None:
|
||||
assert is_user_facing("scripts/setup.sh") is False
|
||||
@@ -48,6 +48,11 @@ class TestIsUserFacing:
|
||||
def test_scripts_init_is_not_user_facing(self) -> None:
|
||||
assert is_user_facing("scripts/__init__.py") is False
|
||||
|
||||
def test_version_file_is_not_user_facing(self) -> None:
|
||||
"""__init__.py only contains __version__ — a release artifact,
|
||||
not user-facing code. Version bumps alone should not trigger releases."""
|
||||
assert is_user_facing("src/gitea_runner_manager/__init__.py") is False
|
||||
|
||||
def test_docs_are_not_user_facing(self) -> None:
|
||||
assert is_user_facing("docs/user/getting-started.md") is False
|
||||
|
||||
|
||||
Reference in New Issue
Block a user