GitHub Workflow¶
This page describes how work flows through the HomeKube repository — from idea to merged code.
Issue lifecycle¶
- Open — use one of the issue templates (Feature, Bug, ADR).
- Triage — assign to a milestone so it appears in the project board.
- In Progress — create a branch, reference the issue in commit messages.
- Review — open a pull request with
Closes #<n>in the description. - Closed — automatically closed when the PR merges into
main.
Milestones¶
Issues are grouped into milestones that map to feature epics:
| Milestone | Focus |
|---|---|
| Workloads | Sample apps, HPA, PVC, image automation |
| Policy & Observability | Policy engine, distributed tracing |
| CI/CD | Pipeline tooling, multi-env promotion |
| Platform Tooling | Kubernetes UI dashboard, documentation hosting |
Branch strategy¶
Branch off main for every change. Use the following naming scheme:
| Pattern | When to use |
|---|---|
feat/<issue>-<slug> |
New feature — e.g. feat/1-podinfo-workload |
fix/<issue>-<slug> |
Bug fix — e.g. fix/42-keycloak-crash |
docs/<slug> |
Docs-only change |
chore/<slug> |
Maintenance, dependency updates |
flux/image-updates |
Automated — written by Flux image automation |
Delete the branch after merge.
Commit conventions¶
All commits must follow Conventional Commits.
The commit-msg prek hook enforces this locally.
Types: feat, fix, docs, chore, refactor, test, ci.
# Good
feat(apps): add podinfo HelmRelease and ingress
fix(identity): correct keycloak realm import path
docs(adrs): add ADR-016 workload pattern
# Bad (no type, uppercase subject, trailing period)
Added podinfo.
Pull request workflow¶
- Push branch and create a draft PR targeting
main— body is pre-filled from the PR template: - Fill in the PR description using
gh pr edit, checking every checklist item honestly. - Include
Closes #<n>to auto-close the issue on merge. - All prek hooks must pass (CI will also run them in a future workflow).
- Mark the PR ready:
gh pr ready <number> - Use Squash and merge — keeps
mainhistory linear and commit messages clean.
PR checklist highlights¶
- Conventional Commit message
flux get all -Aclean- No plaintext secrets in diff
- ADR added for architectural decisions
- Docs +
mkdocs.ymlnav updated if new pages added
Branch protection (main)¶
main is protected with the following rules:
- Direct pushes are not allowed — all changes require a PR.
- Branch must be up to date before merging.
- Stale reviews are dismissed when new commits are pushed.
Labels¶
The project uses GitHub's default labels:
| Label | When to apply |
|---|---|
enhancement |
New feature or improvement |
bug |
Something broken |
documentation |
Docs-only change |
good first issue |
Beginner-friendly task |
help wanted |
Needs input from others |
question |
Clarification needed |
wontfix |
Intentionally not addressed |