emil
3364355c73
GRM-28: fix: Vikunja task resolution pagination in post_merge.py
Post-merge Vikunja update / vikunja (push) Failing after 8s
CI / quality (push) Successful in 1m5s
CI / molecule-tests (1) (push) Successful in 6m44s
CI / molecule-tests (2) (push) Successful in 7m7s
CI / molecule-tests (0) (push) Successful in 9m35s
2026-06-20 17:48:08 +00:00
emil
ea18793963
GRM-26: fix: CI pipeline for rootless Docker runners
Post-merge Vikunja update / vikunja (push) Failing after 5s
CI / quality (push) Successful in 1m3s
CI / molecule-tests (2) (push) Successful in 6m57s
CI / molecule-tests (1) (push) Successful in 7m3s
CI / molecule-tests (0) (push) Successful in 9m17s
2026-06-20 16:16:05 +00:00
Emil Simeonov
129cfe3c79
GRM-20: fix molecule idempotence with mode-specific systemd templates
CI / lint (push) Has been cancelled
CI / unit-tests (push) Has been cancelled
CI / molecule-tests (push) Has been cancelled
2026-06-19 14:12:58 +02:00
Emil Simeonov
d4766da5f9
GRM-20: fix: skip systemd operations in lifecycle molecule when unavailable
...
CI / lint (push) Has been cancelled
CI / unit-tests (push) Has been cancelled
CI / molecule-tests (push) Has been cancelled
The lifecycle scenario runs in a Docker container without systemd
as PID 1. The side_effect and verify playbooks used systemd module
operations unconditionally, causing failures like:
System has not been booted with systemd as init system
Add a systemd availability check (/run/systemd/system stat) to both
playbooks and conditionally skip systemd tasks when running in
environments without systemd (e.g. Molecule Docker containers).
2026-06-19 11:43:55 +02:00
Emil Simeonov
c05d7c9c4f
GRM-20: fix: set runner_mode to binary in multi-instance converge
...
CI / lint (push) Has been cancelled
CI / unit-tests (push) Has been cancelled
CI / molecule-tests (push) Has been cancelled
The multi-instance scenario verify playbook expects config files at
/etc/gitea-runner/<name>/config.yaml (binary mode path). Without
runner_mode set, the role defaulted to docker mode, which places the
config in /var/lib/gitea-runner/<name>/config.yaml instead.
Add runner_mode: binary to both converge plays so config placement
matches the verify assertions.
2026-06-19 10:51:36 +02:00
Emil Simeonov
c91626a8ff
GRM-20: Ensure runner data directory exists in binary mode
...
CI / lint (push) Has been cancelled
CI / unit-tests (push) Has been cancelled
CI / molecule-tests (push) Has been cancelled
The binary_mode.yml task file did not create gitea_runner_data_dir
when runner registration was skipped (as in molecule tests). This
caused the binary scenario verify playbook to fail because the
data directory assertion expected it to exist.
Add an explicit directory creation step before config creation,
mirroring the docker_mode.yml structure.
2026-06-19 04:55:06 +02:00
Emil Simeonov
1d3d2487ac
GRM-20: Fix molecule verify playbooks and update Makefile targets
...
- Add runner_name variable to default, binary, and lifecycle verify playbooks
- Update molecule target to test all 7 scenarios sequentially
- Add molecule-docker and molecule-binary platform matrix targets
- Disable checkmake maxbodylength rule to accommodate longer recipes
2026-06-19 04:26:57 +02:00
Emil Simeonov
39ef86647c
GRM-19: add molecule tests for template content, deregister, and update workflows
...
- template-content: Verifies rendered systemd template contains correct
directives for docker mode (Type=oneshot, RemainAfterExit=yes) and
prune service/timer content.
- deregister: Installs runner, creates fake .runner file, runs deregister
tasks, verifies .runner file is removed.
- update: Installs docker and binary runners, runs update tasks, verifies
image/binary and data directories remain intact after update.
These scenarios bridge gaps where the deregister task file and update
workflows were not covered by existing molecule tests.
2026-06-19 03:24:19 +02:00
Emil Simeonov
5fb282e38e
GRM-19: fix ansible playbooks to use include_role for role defaults loading
...
Replace include_tasks with include_role + tasks_from in disable, remove,
start, enable, stop, and status playbooks. include_tasks does not load
role defaults, causing undefined variable errors (e.g. gitea_runner_data_dir)
when deregistering or registering runners.
2026-06-19 03:18:24 +02:00
Emil Simeonov
1bbe3b4f43
GRM-17: fix docker mode status detection and systemd template
...
- systemd template for docker mode now uses Type=oneshot + RemainAfterExit=yes
so that systemctl is-active returns active when the container is running.
Previously docker run -d exited immediately, causing systemd to mark the
service as inactive even though the container was still up.
- grm list now tries multiple container name fallbacks for docker mode:
1. gitea-runner-{name} (current naming)
2. gitea-runner-{host} (legacy installs where name defaulted to host)
3. systemctl is-active gitea-runner@{name} (for installs with fixed template)
- All tests pass, 100% coverage, ruff + pyright clean
2026-06-19 02:47:14 +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
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
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
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
2026-06-17 18:15:28 +02:00