Skip to content

Maintain fork release branches and unify publishing - #106

Merged
EItanya merged 3 commits into
mainfrom
feat/multi-branch-releases
Oct 30, 2026
Merged

EItanya merged 3 commits into
mainfrom
feat/multi-branch-releases

Conversation

@EItanya

@EItanya EItanya commented Oct 30, 2026 •

Copy link
Copy Markdown

Fixes #105. The fork needs to keep its patches on maintained release branches and publish those branches through the same release process.

Expand the sync skill to cover matching upstream branches, release cutoffs, and selective backports while preserving fork changes. Replace release-fork with the upstream release workflow, enabled for our GHCR namespace with the correct OCI source labels. Publish all three Helm charts before drafting the release, alongside the existing image checks and kubectl-ate binaries.

Manual releases now require an existing version tag. Published artifacts remain protected from reruns, and releases do not move the shared image latest tag. The workflow and publisher changes must be included in the commit being tagged.

Validation: focused race tests passed with -count=3 -shuffle=on; focused golangci-lint, actionlint, shellcheck, formatting, license headers, and Helm packaging/rendering passed. A mutation check confirmed the source-label test fails if the upstream URL is restored. The skill passed its validator and an independent scenario review.

AI use: Codex implemented the changes, ran validation, and performed an independent review.

  • Full repository checks pass
  • Docs updated
Fork release flow
flowchart LR
    tag["Release tag"] --> images["Build and verify images"]
    images --> charts["Publish Helm charts"]
    charts --> binaries["Build kubectl-ate"]
    binaries --> draft["Create draft release"]
    draft --> attach["Attach binaries and checksums"]
Loading

Signed-off-by: Eitan Yarmush <eitan.yarmush@solo.io>
Signed-off-by: Eitan Yarmush <eitan.yarmush@solo.io>
@EItanya
EItanya marked this pull request as ready for review October 30, 2026 13:31
Signed-off-by: Eitan Yarmush <eitan.yarmush@solo.io>
Comment on lines +132 to +146
if strings.Contains(notes, "## Images") != tc.artifacts || strings.Contains(notes, "## kubectl-ate") != tc.artifacts {
t.Fatalf("incorrect artifact notes:\n%s", notes)
}
if strings.Contains(notes, "## Helm charts") != (tc.repo == "kagent-dev/substrate") {
t.Fatalf("incorrect chart notes:\n%s", notes)
}
if tc.artifacts {
repo := tc.registry
if repo == "" {
repo = "ghcr.io/" + tc.repo
}
if !strings.Contains(notes, "--image-repo "+repo+" --image-tag v1.0.0") {
t.Errorf("incorrect install image repository:\n%s", notes)
}
}

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Nit: I had to read the code a few times to understand what we're testing here, especially around here

Copy link
Copy Markdown
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

We should generally clean up testing later, some of them make no sense

@EItanya
EItanya merged commit a57b084 into main Oct 30, 2026
7 of 8 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Support patched release branches with one publishing workflow

2 participants