Files
grm/CONTRIBUTING.md
T
Emil SimeonovandDevin <158243242+devin-ai-integration[bot]@users.noreply.github.com> 55c2746569
CI / quality (pull_request) Failing after 1m4s
CI / molecule-tests (0) (pull_request) Has been skipped
CI / molecule-tests (1) (pull_request) Has been skipped
CI / molecule-tests (2) (pull_request) Has been skipped
refactor: rootless Docker, fix auto-merge, molecule platform matrix
Three major improvements:

1. Rootless Docker refactor: Removes docker/binary modes, unifies to
   rootless Docker with per-runner system users. Each runner gets its
   own rootless Docker daemon, systemd user service, and isolated
   environment. Simplifies CLI (removes --mode option), Ansible role
   (single code path), and molecule scenarios (removes binary scenario).

2. Auto-merge fix: Fixes status check context mismatch in branch
   protection (was requiring "lint", "unit-tests", "molecule-tests" but
   actual contexts are "CI / quality", "CI / molecule-tests*"). Adds
   retry/wait logic to auto_merge.py that polls commit statuses for up
   to 15 minutes before attempting merge, eliminating the chicken-and-egg
   problem where auto-merge would fail because CI hadn't completed yet.

3. Molecule platform matrix: Adds OS platform matrix to CI — all 6
   scenarios now run on all 4 supported OSes (ubuntu-2204, ubuntu-2404,
   debian-12, archlinux) = 24 test pairs distributed across 3 parallel
   runners. Updates distribute_molecule.py to distribute (scenario,
   platform) pairs. Updates Makefile with molecule-all target for
   local multi-platform testing.

Generated with [Devin](https://devin.ai)

Co-Authored-By: Devin <158243242+devin-ai-integration[bot]@users.noreply.github.com>
2026-06-20 21:02:52 +02:00

1.6 KiB

Contributing to GRM

Thank you for contributing to Gitea Runner Manager (GRM)!

Branch Naming

All feature branches must include a GRM-N prefix corresponding to the Vikunja task identifier. Examples:

  • GRM-19
  • GRM-19-fix-bug
  • GRM-42-add-update-command

The GRM-N prefix is mandatory — CI extracts it for merge messages and Vikunja updates.

Commit Format

Feature branches

Use conventional commits on feature branches:

feat: add new command
fix: resolve timeout issue
chore: update dependencies
docs: improve README

Allowed types: feat, fix, chore, docs, style, refactor, perf, test, ci, build, revert, BREAKING CHANGE.

Do NOT include the GRM-N: prefix in commit messages on feature branches.

Master branch (squash merges)

Squash commits on master must follow:

GRM-N: <conventional commit message>

Example: GRM-24: fix: resolve molecule idempotence.

This format is enforced by the auto-merge workflow, which validates the PR title is a conventional commit before squash-merging and prepending the task ID.

Local Testing

make test-all    # Runs pytest-cov + molecule
make lint-all    # Runs ruff, pyright, bandit, ansible-lint, checkmake
make lint-bandit # Security scan with bandit
make pytest-cov  # Unit tests with 100% coverage enforcement
make molecule    # All 6 molecule scenarios

Code Quality

  • ruff: Line length 120
  • pyright: Strict mode
  • bandit: Security scan for Python code (no high/medium severity issues)
  • Test coverage: 100% required
  • ansible-lint: For all Ansible content