4.2 KiB
Retrospective: CI Consolidation and devx Adoption
Date
2026-07-12
Context
The grm repo (Gitea Runner Manager) underwent CI workflow consolidation
and adopted the latest devx package (v0.40.0 → v0.40.1) during this
period. The self-approval fallback fix in devx v0.40.1 required passing
CI_GITEA_API_TOKEN to the approval step in grm's CI workflow. This
retrospective covers grm v0.17.2 through v0.18.0.
Scope
PRs: GRM-144 (IPv6/pasta), GRM-145 (devx v0.40.0 adoption), GRM-146 (CI consolidation). Plus the self-approval fallback cherry-pick. ~12 commits.
Timeline of Key Events
| Event | Description |
|---|---|
| GRM-144 merged | IPv6 support via pasta network driver (v0.18.0) |
| GRM-145 merged | Adopted devx v0.40.0, removed redundant crypto/vault wrappers |
| GRM-146 merged | Consolidated CI and post-merge workflows (7→2 jobs) |
| devx v0.40.1 bump | Cherry-picked self-approval fallback into grm CI |
No CI failures were specific to grm during this period. The grm CI
passed cleanly on all runs. The only issue was the cross-repo
self-approval bug (inherited from devx), which was fixed by bumping
devx to v0.40.1 and passing CI_GITEA_API_TOKEN to the approval step.
What Served Us Well
- Clean CI consolidation. GRM-146 merged 7 CI jobs into 2 (validate + molecule-tests) without any CI failures. The consolidation pattern was already proven in devx (DEVX-126), so the application to grm was straightforward.
- devx adoption was smooth. GRM-145 adopted devx v0.40.0 and removed redundant crypto/vault wrappers. The refactoring was clean — no test failures, no coverage drops.
- Molecule tests stable. All 6 molecule scenarios passed on every CI run. The pasta networking change (GRM-144) was well-tested with molecule before merge.
- Pre-push hook caught missing Vikunja tasks. The pre-push hook validates Vikunja task existence, preventing pushes without corresponding tasks.
What Could Be Improved
1. Cross-Repo Dependency Propagation
When devx v0.40.1 was released with the self-approval fix, grm needed
to bump its devx version and update the CI workflow to pass
CI_GITEA_API_TOKEN. This was a manual process — there's no automated
mechanism to detect that a devx release affects downstream repos.
Impact: The self-approval fix was in devx for ~30 min before grm was updated. If the timing had been different, grm PRs could have been blocked.
Lesson: When releasing a devx fix that affects CI workflows in downstream repos, bump devx in all repos in the same session. Consider a "dependabot" style check that flags outdated devx versions.
2. No Repo-Specific Retrospective Directory
The grm repo didn't have a docs/retrospectives/ directory until now.
Previous retrospectives were only in the infra repo. This meant grm-
specific lessons weren't being captured.
Impact: Low — grm had fewer issues during this period. But going forward, grm-specific learnings should be documented here.
Fix: Created docs/retrospectives/ directory with this
retrospective.
Improvements Implemented
1. CI Workflow Consolidation (MEDIUM impact)
Merged 7 CI jobs into 2 (validate + molecule-tests), matching the pattern established in devx. Reduced runner overhead by ~4 min per CI run.
2. devx v0.40.1 Adoption (HIGH impact)
Bumped devx to v0.40.1, picking up the self-approval fallback fix.
Updated CI workflow to pass CI_GITEA_API_TOKEN to the approval step.
3. IPv6 Support via Pasta (MEDIUM impact)
GRM-144 enabled IPv6 in rootless Docker via the pasta network driver, replacing the previous slirp4netns setup. This improves network performance and enables IPv6 connectivity for runner containers.
Action Items for Future Sessions
- Bump devx in all downstream repos when a CI-affecting fix is released. Don't leave repos on stale devx versions.
- Document grm-specific lessons in this retrospective directory. Don't rely on the infra retrospective to cover grm issues.
- When consolidating CI workflows, verify that all status checks
referenced by branch protection are still present. The
consolidation renamed
qualitytovalidate, requiring a branch protection update.