Files
grm/CONTRIBUTING.md
emil 89a765eca6
Post-merge / detect-type (push) Successful in 52s
Post-merge / release (push) Successful in 1m13s
Post-merge / validate-commit-msg (push) Successful in 1m32s
Post-merge / sync-wiki (push) Failing after 1m34s
Post-merge / badges (push) Successful in 1m38s
Post-merge / vikunja (push) Successful in 1m39s
Post-merge / configure-repo (push) Successful in 1m16s
Post-merge / publish (push) Successful in 56s
GRM-139: feat: adopt documentation-as-code enhancements from devx
2026-07-06 09:08:33 +00:00

1.7 KiB

Contributing to GRM

For the full contributing guide, see the Contributing wiki page.

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