Files
grm/CHANGELOG.md
T
2026-06-22 15:11:54 +02:00

6.8 KiB

Changelog

All notable changes to this project will be documented in this file.

[0.6.1] - 2026-06-22

[0.6.1] - 2026-06-22

[0.6.1] - 2026-06-22

[0.6.1] - 2026-06-22

[0.6.1] - 2026-06-22

Bug Fixes

  • Strengthen review process with deeper checks and structured checklist
  • Close CI gaps with workflow dry-run, automated configure_repo, aligned timeouts

[0.6.0] - 2026-06-22

Features

  • Add self-updating quality badges to README
  • Enforce mandatory PR reviews with automated checks

Bug Fixes

  • Bridge test suite gaps — lint scripts, include integration tests
  • Badge regex patterns and doc_coverage double-percent
  • Generate self-contained SVG badges instead of shields.io JSON
  • Auto_merge handles single-token workflow (self-approval)
  • Workflow timing, timeouts, status polling, and release classification
  • API resilience with retry, idempotent releases, and graceful Vikunja errors
  • Release pipeline determinism with lock, rebase, and consistent classification
  • Enforce conventional commit check in automated PR review
  • Molecule-tests matrix runner-index renders as empty for 0
  • Use 1-based runner indices for Gitea Actions compatibility
  • Molecule-tests static matrix and role_dir path fix
  • Auto-merge label condition uses pull_request.labels
  • Badges job runs after release to reflect actual state
  • Revert review_pr.py to GiteaClient (tea v0.14.1 is interactive-only) (#70)
  • Fix broken automation pipeline (auto-merge, Vikunja, CI enforcement)

Refactor

  • Consolidate CI workflows to eliminate redundant runs
  • Convert shell scripts and inline workflow scripts to Python
  • Enforce script separation and document import rules

Revert

  • Remove v0.6.0 release (no user-facing changes)

[0.5.0] - 2026-06-21

Packaging

  • pyproject.toml now uses dynamic = ["version"] with setuptools attr to source version from __init__.py (single source of truth)
  • Added console_scripts entry point (grm = "gitea_runner_manager.cli:cli")

Bug Fixes

  • Arch Linux: pacman cache update now runs separately before package installation (fixes idempotence)
  • rootless_docker.yml: separated update_cache from package installation task

Internal

  • Added GiteaClient.create_issue, GiteaClient.get_pr_files, GiteaClient.create_review API methods
  • Added VikunjaClient.get_task method
  • Config URLs and repo settings now overridable via environment variables

[0.4.0] - 2026-06-21

Rootless Docker Support

  • Full rootless Docker installation and configuration via Ansible
  • docker_rootless_setup variable controls whether rootless Docker tasks run
  • User setup tasks (subuid/subgid, lingering, dockerd-rootless)
  • Proper gating of all Docker-dependent and systemctl --user tasks

Runner Labels

  • --labels option on grm install — specify runner labels (e.g., --labels "ubuntu-latest:docker://node:20")
  • Labels passed through to runner config YAML

Security Fix (CWE-214)

  • Critical: Registration tokens and admin tokens are no longer passed via --extra-vars on the command line
  • Extra-vars are now written to a temporary JSON file with 0600 permissions and passed via --extra-vars @tempfile
  • This prevents secrets from being visible in the process list (ps aux)

Configuration via Environment Variables

  • API URLs and repo configuration in config.py are now overridable via environment variables:
    • GRM_GITEA_API_URL
    • GRM_VIKUNJA_API_URL
    • GRM_REPO_OWNER
    • GRM_REPO_NAME
    • GRM_VIKUNJA_PROJECT_ID

Ansible Role Improvements

  • Dead code cleanup (removed config.yml, legacy system-level service, duplicate task includes)
  • remove-runner.yml now disables lingering and removes subuid/subgid entries for complete cleanup
  • Arch Linux: gnupg package name fix, pacman cache handling
  • Docker APT repository: deb822 format, proper GPG handling, arch mapping
  • Idempotence fixes for user_setup and download tasks

[0.3.0] - 2026-06-21

New CLI Options

  • --force flag on grm remove — remove a runner even when the host is unreachable (skips Ansible playbook, only deregisters via API)
  • --url option — override the Gitea URL for any command (useful for multiple Gitea instances)
  • --ask-become-pass is now the default behavior (no need to pass it explicitly)

Status Detection Fixes

  • grm list now correctly retrieves runner status (was showing "unknown" for active runners)
  • Docker mode status detection via docker inspect
  • Host/user context added to status output

Output Improvements

  • Colorized output for better visual feedback (green/red/yellow)
  • Translated operation reports for success and failure cases
  • Dual logging: click.echo() for user-facing messages, logging for debug
  • GRM_LOG_LEVEL environment variable for controlling verbosity
  • Full i18n support (all user-facing strings translated)

Internal Refactoring

  • Validation moved from CLI layer to business layer
  • Centralized API clients and HTTP status codes
  • User-friendly Click errors with i18n

[0.2.0] - 2026-06-21

New CLI Commands

  • grm start <host> — start a runner's systemd service
  • grm stop <host> — stop a runner's systemd service
  • grm enable <host> — enable a runner to start on boot
  • grm disable <host> — disable a runner from starting on boot
  • grm status <host> — check runner service status
  • grm remove <host> — deregister and remove a runner
  • grm list-runners — list all runners from the local registry

Runner Registry

  • Runners are tracked in ~/.config/grm/runners.toml for simplified CLI usage
  • No need to specify --url, --user, --key for every command — the registry remembers

Multi-Instance Support

  • systemd template units (gitea-runner@.service) for running multiple runners per host
  • Per-instance config and data directories

Ansible Role Improvements

  • Parameterized all hardcoded configuration values as Ansible variables
  • Idempotence fixes for repeated runs
  • Runner config converted from TOML to YAML format
  • Registration timeout to prevent indefinite hangs
  • Docker container entrypoint override and working directory fix for .runner persistence

[0.1.0] - 2026-06-21

Initial Release

The first release of GRM, a lean CLI for managing Gitea Actions runners via SSH.

CLI Commands

  • grm install <host> — install and register a Gitea Runner on a remote host via SSH
  • grm token — generate a registration token via the Gitea API
  • grm list — list all registered runners
  • grm update <host> — update a runner to the latest version

Ansible Role

  • Installs Gitea Runner binary in binary or Docker mode
  • Registers runner with Gitea instance
  • Configures systemd service
  • Supports Arch Linux, Ubuntu, and Debian

Features

  • SSH-based remote execution via Ansible
  • Automatic registration token generation
  • Docker and binary installation modes
  • Integration test verification after installation