Emil Simeonov
3b3e002f7f
GRM-13: feat: replace print() with stdlib logging module
...
- Create logging_config.py with get_logger() providing dual handlers:
- Console handler (stderr) controlled by GRM_LOG_LEVEL env var (default INFO)
- File handler (~/.local/state/grm/logs/grm.log) capturing everything at DEBUG
- Replace all print() calls in executor.py and report.py with logger.info()/error()
- Add error logging before raising AnsibleError in executor.run()
- Add GRM_LOG_LEVEL to README configuration table and logging documentation
- Update all unit tests to mock logger instead of using capsys
- 114 tests, 100% coverage, pyright clean, ruff clean
2026-06-19 01:24:35 +02:00
Emil Simeonov
815b59c537
GRM-12: feat: add translated operation report for success and failure cases
...
- Create StepTracker context manager in new report.py module
- Track each step of lifecycle operations (install, update, start, stop, enable,
disable, status, remove) with begin/done markers
- On success: report lists all completed steps with ✓ icons
- On failure: report shows failed step (✗), completed steps before failure (✓),
and pending steps that never started (○)
- Add translations for report header, status labels, and registry step names
in all 5 supported languages (EN/BG/DE/RU/ZH)
- 105 tests, 100% coverage, pyright clean, ruff clean
2026-06-19 01:16:39 +02:00
Emil Simeonov
3b68302274
GRM-11: i18n: translate all remaining user-facing strings
2026-06-19 00:57:26 +02:00
Emil Simeonov
b3ac955515
GRM-10: refactor: deduplicate CLI, remove dead code, move validation to business layer
2026-06-19 00:57:26 +02:00
Emil Simeonov
4c08606d0c
GRM-9: feat: add runner registry for simplified CLI UX
2026-06-19 00:57:26 +02:00
Emil Simeonov
a575a89026
GRM-16: test: add molecule lifecycle scenarios, integration tests, and docs
...
- Add multi-instance molecule scenario verifying isolated data/config dirs
- Add lifecycle molecule scenario testing stop/disable/enable/start sequence
- Update default and binary verify playbooks for template unit assertions
- Add integration tests for full CLI lifecycle and multi-instance support
- Add pytest integration marker and --no-cov Makefile target
- Update README with lifecycle commands, multi-instance examples, and architecture
- Update Makefile with start/stop/enable/disable/status/remove targets
- Update .env.example with GRM_LANG documentation
2026-06-18 23:14:02 +02:00
Emil Simeonov
adb758f5f5
GRM-15: feat: add lifecycle CLI commands and RunnerManager extensions
...
- Add start, stop, enable, disable, status, remove methods to RunnerManager
- Add corresponding CLI subcommands: grm start/stop/enable/disable/status/remove
- Add i18n translations for lifecycle commands across all supported languages
- Add comprehensive unit tests for lifecycle methods and CLI commands
- Fix environment variable leakage in CLI tests for GITEA_URL
2026-06-18 22:59:50 +02:00
Emil Simeonov
e5964ca5a9
GRM-14: feat: add systemd template units and multi-instance Ansible support
...
- Add instance-scoped base data/config directories in defaults
- Create gitea-runner@.service.j2 template supporting Docker and binary modes
- Refactor service.yml to install systemd template unit instances
- Remove direct container lifecycle from docker_mode.yml (delegate to systemd)
- Add deregister.yml for runner deregistration on disable/remove
- Create lifecycle playbooks: start, stop, enable, disable, status, remove
- Update handlers, integration_test, docker_update, binary_update for template units
2026-06-18 22:59:04 +02:00
Emil Simeonov
047ee05fa1
GRM-7: feat: integrate AnsibleExecutor and i18n into CLI and RunnerManager
2026-06-18 20:17:07 +02:00
Emil Simeonov
564c12e782
GRM-8: feat: add AnsibleExecutor and i18n modules
2026-06-18 20:16:50 +02:00
Emil Simeonov
6414f2306c
GRM-13: fix: rewrite integration test to verify .runner file and container health instead of unreliable API checks
2026-06-18 09:34:45 +02:00
Emil Simeonov
1ad7c0a816
GRM-12: fix: convert runner config from TOML to YAML format
2026-06-18 04:47:41 +02:00
Emil Simeonov
68dcbc9b16
GRM-12: docs: update .env.example with GITEA_ADMIN_TOKEN and scope requirements
2026-06-18 04:41:09 +02:00
Emil Simeonov
9378451a12
GRM-12: fix: remove recursive var definitions from install-runner.yml
2026-06-18 04:40:11 +02:00
Emil Simeonov
e08c11ea83
GRM-12: feat: add GITEA_ADMIN_TOKEN support for integration test
2026-06-18 04:37:05 +02:00
Emil Simeonov
81dd11e720
GRM-12: fix: make integration test conditional on admin API accessibility
2026-06-18 04:34:28 +02:00
Emil Simeonov
a05cd1c7ee
GRM-12: fix: set Docker working dir to /data for .runner persistence
2026-06-18 04:29:24 +02:00
Emil Simeonov
55fee77c91
GRM-11: fix: override Docker container entrypoint to bypass run.sh wrapper
2026-06-18 04:23:14 +02:00
Emil Simeonov
b48038a3a9
GRM-10: fix: add timeout to runner registration to prevent indefinite hangs
2026-06-18 04:11:43 +02:00
Emil Simeonov
994c30da57
GRM-9: test: add parameterized multi-platform Molecule testing (Arch, Ubuntu 24/26, Debian 12/13)
2026-06-18 04:09:27 +02:00
Emil Simeonov
aef24352c1
GRM-8: fix: remove recursive variable definitions in install and update playbooks
2026-06-18 03:50:08 +02:00
Emil Simeonov
8c385dcbdc
GRM-7: docs: overhaul README and add project documentation
2026-06-18 03:36:20 +02:00
Emil Simeonov
2530ec54cc
GRM-6: fix: resolve idempotence issues and testing infrastructure
2026-06-18 03:36:20 +02:00
Emil Simeonov
cc000c226c
GRM-5: feat: parameterize all hardcoded configuration values as Ansible variables
2026-06-18 03:36:20 +02:00
Emil Simeonov
0cea9b9490
GRM-4: refactor: consolidate systemd checks and deduplicate role structure
2026-06-18 03:36:19 +02:00
Emil Simeonov
b3838eb180
GRM-3: refactor: migrate source terminology from act_runner to gitea_runner
2026-06-18 03:36:19 +02:00
Emil Simeonov
3c8654342f
GRM-2: refactor: remove dead code and legacy artifacts
2026-06-18 03:36:19 +02:00
Emil Simeonov
170b53ad28
GRM-1: feat: initial implementation of Gitea Runner Manager
v0.1.0
2026-06-17 18:15:28 +02:00