[PR #266] [MERGED] Backport upstream cluster-template workflow parity with just-first operator UX #158

Closed
opened 2026-06-08 08:30:25 +00:00 by ryangr0 · 0 comments
Owner

📋 Pull Request Information

Original PR: https://github.com/webgrip/homelab-cluster/pull/266
Author: @Copilot
Created: 5/25/2026
Status: Merged
Merged: 5/25/2026
Merged by: @Ryangr0

Base: mainHead: copilot/update-parity-with-upstream-template


📝 Commits (6)

  • 4aff42c Initial plan
  • 5adbd56 chore: add just workflow and upstream parity tooling updates
  • ba6569a fix(ci): remove --enable-helm from e2e flux-local test step
  • d68685a fix: update CoreDNS OCI digest to match current registry (1.45.2)
  • 76c063b fix(ci): remove --enable-helm from flux-local test step to fix OCI digest version constraint error
  • 380871e fix(ci): stop running flux-local helmrelease diff matrix job

📊 Changes

16 files changed (+174 additions, -22 deletions)

View changed files

📝 .github/labeler.yaml (+4 -2)
📝 .github/labels.yaml (+1 -1)
.github/workflows/e2e.yaml (+35 -0)
📝 .github/workflows/flux-local.yaml (+12 -0)
📝 .gitignore (+1 -2)
.lefthook.toml (+21 -0)
📝 .mise.toml (+15 -3)
📝 .vscode/extensions.json (+1 -0)
.yamlfmt.yaml (+13 -0)
📝 README.md (+1 -1)
📝 docs/techdocs/docs/platform-components.md (+2 -2)
📝 docs/techdocs/docs/runbooks/kubernetes-upgrade-via-talos.md (+1 -1)
📝 docs/techdocs/docs/runbooks/talos-rolling-upgrade.md (+3 -3)
📝 docs/techdocs/docs/talos-add-workstation-node.md (+6 -6)
justfile (+57 -0)
📝 kubernetes/apps/kube-system/coredns/app/ocirepository.yaml (+1 -1)

📄 Description

  • Inspect failing GitHub Actions run/job logs for "Flux Local Diff (helmrelease)"
  • Identify root cause in repository manifests or CI config
  • Implement the smallest possible fix
  • Run targeted validation for changed area
  • Run required security scan (CodeQL checker)
  • Report final status and remaining risks
Original prompt

The following is the conversation history from a previous Copilot CLI session. Continue working on it.

User: Look at https://github.com/onedr0p/cluster-template. Since I cloned that repo into homelab-cluster, there have been some changes and updates to the cluster-template. I basically want to have parity. Please outline all the major and minor differences.
Assistant: I’m comparing your repo against the current upstream template first, then I’ll group the drift into major vs. minor parity gaps.I have the upstream checked out now. Next I’m narrowing the comparison to structure and tracked config so the parity gaps are useful instead of just “your repo is customized.”The biggest drift is already clear: upstream has become a generator-based template repo, while your repo is now a fully rendered, cluster-specific GitOps repo. I’m checking the surrounding tooling and workflow files now so I can separate foundational changes from local customizations.I’ve confirmed upstream is no longer shipping a “ready-made cluster repo” at the root. It ships a generator plus templates, which means parity is mostly about adopting its current scaffolding, workflow, and automation model rather than copying manifests 1:1.I found one concrete parity gap that’s easy to miss: upstream’s release automation lives under .github/workflows/release.yaml, while your repo has release.yaml under .github/, so that file is just data unless you copied it elsewhere. I’m checking the remaining GitHub/meta files now.I’ve got the repo-model differences pinned down now. The remaining useful detail is mostly in tooling/version drift and GitHub automation drift, not in the cluster manifests themselves.I’ve got the workflow and repo-layout drift. I’m doing one last pass on the tooling/version matrix so the parity list includes the concrete things upstream added or bumped.I have enough to outline the parity gap cleanly now: upstream changes are concentrated in template generation, developer workflow, and CI meta, while your repo has moved heavily into cluster-specific manifests, apps, and operational tooling.Bottom line: you do not have parity with current onedr0p/cluster-template. The biggest reason is structural: upstream is now a generator-based template repo (cluster.toml + makejinja + just + template/), while homelab-cluster is a fully rendered, cluster-specific GitOps repo with substantial custom platform/app content.

Major differences

Area Upstream cluster-template Your homelab-cluster Impact
Repo model Template source repo Real cluster repo Largest drift; parity is not a simple merge/rebase
Config source of truth cluster.sample.tomlcluster.toml No cluster.toml; manifests are authored/rendered directly You’re missing upstream’s current config abstraction
Templating engine makejinja.toml + template/ + CUE schema No template engine in repo layout Upstream improvements won’t flow in naturally
Task runner justfile + mod.just modules Taskfile.yaml + .taskfiles/ Different operational workflow
Rendered layout Template definitions under template/config/... Concrete bootstrap/, kubernetes/, talos/ trees Equivalent domains exist, but not via upstream’s current generation path
Cluster scope Minimal opinionated starter Large, customized platform + apps + docs repo Parity would require selectively adopting upstream, not replacing local structure
Docs Setup guide for creating a cluster Detailed cluster-specific operations README + TechDocs/Backstage catalog Your repo is now an ops product, not a starter template

Major upstream things you are missing

  1. Template pipeline

    • cluster.sample.toml
    • makejinja.toml
    • template/
    • justfile
    • template/resources/config.schema.cue
  2. Validation/test scaffolding

    • .github/workflows/e2e.yaml
    • .github/tests/valid/*
    • .github/tests/invalid/*
  3. Current developer workflow

    • lefthook pre-commit setup via .lefthook.toml
    • .yamlfmt.yaml
    • mise.lock
    • JUST_UNSTABLE=1 in .mise.toml
  4. Current GitHub workflow set

    • Upstream has active e2e.yaml and workflows/release.yaml
    • Your repo instead has custom Renovate workflows and no active release workflow under .github/workflows/release.yaml

Major things your repo has that upstream does not

  1. Large cluster-specific platform/app surface

    • kubernetes/apps/* with many namespaces/apps beyond the template baseline
    • examples: arc-systems, backstage, cnpg-*, longhorn-system, observability, renovate, minecraft, n8n, searxng, zomboid, etc.
  2. Operational docs and inventory

    • docs/techdocs
    • catalog/
    • catalog-info.yaml
  3. Custom automation/agents

    • .github/agents/cluster-health.agent.md
    • `.github/agents/renovate-trigger.agent...

Created from VS Code.


🔄 This issue represents a GitHub Pull Request. It cannot be merged through Gitea due to API limitations.

## 📋 Pull Request Information **Original PR:** https://github.com/webgrip/homelab-cluster/pull/266 **Author:** [@Copilot](https://github.com/apps/copilot-swe-agent) **Created:** 5/25/2026 **Status:** ✅ Merged **Merged:** 5/25/2026 **Merged by:** [@Ryangr0](https://github.com/Ryangr0) **Base:** `main` ← **Head:** `copilot/update-parity-with-upstream-template` --- ### 📝 Commits (6) - [`4aff42c`](https://github.com/webgrip/homelab-cluster/commit/4aff42c851b2f15e9e3a43dcbdeac17aad61a2e6) Initial plan - [`5adbd56`](https://github.com/webgrip/homelab-cluster/commit/5adbd56987c1a43a00a0b0f93fe7f0c1da65264b) chore: add just workflow and upstream parity tooling updates - [`ba6569a`](https://github.com/webgrip/homelab-cluster/commit/ba6569aec8228e23e00986c385f9c8cefd71ab69) fix(ci): remove --enable-helm from e2e flux-local test step - [`d68685a`](https://github.com/webgrip/homelab-cluster/commit/d68685a4b8847e25aceb707f095cc39f3f2eb31c) fix: update CoreDNS OCI digest to match current registry (1.45.2) - [`76c063b`](https://github.com/webgrip/homelab-cluster/commit/76c063b27e8e1ecb9019ac2e80fe2c1e568d4b1b) fix(ci): remove --enable-helm from flux-local test step to fix OCI digest version constraint error - [`380871e`](https://github.com/webgrip/homelab-cluster/commit/380871e6ed2d03dbaa482ecc61198559275300af) fix(ci): stop running flux-local helmrelease diff matrix job ### 📊 Changes **16 files changed** (+174 additions, -22 deletions) <details> <summary>View changed files</summary> 📝 `.github/labeler.yaml` (+4 -2) 📝 `.github/labels.yaml` (+1 -1) ➕ `.github/workflows/e2e.yaml` (+35 -0) 📝 `.github/workflows/flux-local.yaml` (+12 -0) 📝 `.gitignore` (+1 -2) ➕ `.lefthook.toml` (+21 -0) 📝 `.mise.toml` (+15 -3) 📝 `.vscode/extensions.json` (+1 -0) ➕ `.yamlfmt.yaml` (+13 -0) 📝 `README.md` (+1 -1) 📝 `docs/techdocs/docs/platform-components.md` (+2 -2) 📝 `docs/techdocs/docs/runbooks/kubernetes-upgrade-via-talos.md` (+1 -1) 📝 `docs/techdocs/docs/runbooks/talos-rolling-upgrade.md` (+3 -3) 📝 `docs/techdocs/docs/talos-add-workstation-node.md` (+6 -6) ➕ `justfile` (+57 -0) 📝 `kubernetes/apps/kube-system/coredns/app/ocirepository.yaml` (+1 -1) </details> ### 📄 Description - [x] Inspect failing GitHub Actions run/job logs for "Flux Local Diff (helmrelease)" - [x] Identify root cause in repository manifests or CI config - [x] Implement the smallest possible fix - [x] Run targeted validation for changed area - [x] Run required security scan (CodeQL checker) - [x] Report final status and remaining risks <!-- START COPILOT ORIGINAL PROMPT --> <details> <summary>Original prompt</summary> The following is the conversation history from a previous Copilot CLI session. Continue working on it. User: Look at https://github.com/onedr0p/cluster-template. Since I cloned that repo into homelab-cluster, there have been some changes and updates to the cluster-template. I basically want to have parity. Please outline all the major and minor differences. Assistant: I’m comparing your repo against the current upstream template first, then I’ll group the drift into major vs. minor parity gaps.I have the upstream checked out now. Next I’m narrowing the comparison to structure and tracked config so the parity gaps are useful instead of just “your repo is customized.”The biggest drift is already clear: upstream has become a generator-based template repo, while your repo is now a fully rendered, cluster-specific GitOps repo. I’m checking the surrounding tooling and workflow files now so I can separate foundational changes from local customizations.I’ve confirmed upstream is no longer shipping a “ready-made cluster repo” at the root. It ships a generator plus templates, which means parity is mostly about adopting its current scaffolding, workflow, and automation model rather than copying manifests 1:1.I found one concrete parity gap that’s easy to miss: upstream’s release automation lives under `.github/workflows/release.yaml`, while your repo has `release.yaml` under `.github/`, so that file is just data unless you copied it elsewhere. I’m checking the remaining GitHub/meta files now.I’ve got the repo-model differences pinned down now. The remaining useful detail is mostly in tooling/version drift and GitHub automation drift, not in the cluster manifests themselves.I’ve got the workflow and repo-layout drift. I’m doing one last pass on the tooling/version matrix so the parity list includes the concrete things upstream added or bumped.I have enough to outline the parity gap cleanly now: upstream changes are concentrated in template generation, developer workflow, and CI meta, while your repo has moved heavily into cluster-specific manifests, apps, and operational tooling.**Bottom line:** you do **not** have parity with current `onedr0p/cluster-template`. The biggest reason is structural: upstream is now a **generator-based template repo** (`cluster.toml` + `makejinja` + `just` + `template/`), while `homelab-cluster` is a **fully rendered, cluster-specific GitOps repo** with substantial custom platform/app content. ## Major differences | Area | Upstream `cluster-template` | Your `homelab-cluster` | Impact | |---|---|---|---| | **Repo model** | Template source repo | Real cluster repo | **Largest drift**; parity is not a simple merge/rebase | | **Config source of truth** | `cluster.sample.toml` → `cluster.toml` | No `cluster.toml`; manifests are authored/rendered directly | You’re missing upstream’s current config abstraction | | **Templating engine** | `makejinja.toml` + `template/` + CUE schema | No template engine in repo layout | Upstream improvements won’t flow in naturally | | **Task runner** | `justfile` + `mod.just` modules | `Taskfile.yaml` + `.taskfiles/` | Different operational workflow | | **Rendered layout** | Template definitions under `template/config/...` | Concrete `bootstrap/`, `kubernetes/`, `talos/` trees | Equivalent domains exist, but not via upstream’s current generation path | | **Cluster scope** | Minimal opinionated starter | Large, customized platform + apps + docs repo | Parity would require selectively adopting upstream, not replacing local structure | | **Docs** | Setup guide for creating a cluster | Detailed cluster-specific operations README + TechDocs/Backstage catalog | Your repo is now an ops product, not a starter template | ## Major upstream things you are missing 1. **Template pipeline** - `cluster.sample.toml` - `makejinja.toml` - `template/` - `justfile` - `template/resources/config.schema.cue` 2. **Validation/test scaffolding** - `.github/workflows/e2e.yaml` - `.github/tests/valid/*` - `.github/tests/invalid/*` 3. **Current developer workflow** - `lefthook` pre-commit setup via `.lefthook.toml` - `.yamlfmt.yaml` - `mise.lock` - `JUST_UNSTABLE=1` in `.mise.toml` 4. **Current GitHub workflow set** - Upstream has active `e2e.yaml` and `workflows/release.yaml` - Your repo instead has custom Renovate workflows and no active release workflow under `.github/workflows/release.yaml` ## Major things your repo has that upstream does not 1. **Large cluster-specific platform/app surface** - `kubernetes/apps/*` with many namespaces/apps beyond the template baseline - examples: `arc-systems`, `backstage`, `cnpg-*`, `longhorn-system`, `observability`, `renovate`, `minecraft`, `n8n`, `searxng`, `zomboid`, etc. 2. **Operational docs and inventory** - `docs/techdocs` - `catalog/` - `catalog-info.yaml` 3. **Custom automation/agents** - `.github/agents/cluster-health.agent.md` - `.github/agents/renovate-trigger.agent... </details> <!-- START COPILOT CODING AGENT SUFFIX --> Created from [VS Code](https://code.visualstudio.com/docs/copilot/copilot-coding-agent). --- <sub>🔄 This issue represents a GitHub Pull Request. It cannot be merged through Gitea due to API limitations.</sub>
ryangr0 2026-06-08 08:30:25 +00:00
Sign in to join this conversation.
No labels
pull-request
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
webgrip/homelab-cluster#158
No description provided.