Skip to content

chore: back-merge v2.0.1 into develop - #765

Merged
andyne13 merged 6 commits into
developfrom
backmerge/v2.0.1-into-develop
Jul 24, 2026
Merged

chore: back-merge v2.0.1 into develop#765
andyne13 merged 6 commits into
developfrom
backmerge/v2.0.1-into-develop

Conversation

@andyne13

@andyne13 andyne13 commented Jul 23, 2026

Copy link
Copy Markdown
Contributor

Standard git-flow back-merge after the v2.0.1 release. Brings two things onto develop:

  1. Version bumps (pyproject/uv.lock → 2.0.1, chart 0.5.2, compose + chart image tags → v2.0.1) — so the next cycle does not start from 2.0.0.
  2. The build.yml guard hotfix (fix(ci): make build.yml GA build fire on release tags under protected main #764) — the verify-tag gate that replaced the unusable base_ref check. Without this, the next release from develop re-breaks identically (silent skip of all image builds under protected main).

No new features; pure release reconciliation. develop has not moved since release/2.0.1 was cut, so this is conflict-free.

Summary by CodeRabbit

  • New Release

    • OpenRAG updated to version 2.0.1.
    • Updated container images for the main app, Ray, and Admin UI are now used by Helm charts and Docker Compose.
  • Reliability

    • Release publishing now validates that GA tags match the expected version pattern and that the tagged commit is contained in the main branch before images are built/pushed.

andyne13 and others added 4 commits July 23, 2026 18:29
Also fix the chart's api and ray image tags, which pinned a non-existent
'1.1.13' tag (published tags carry the 'v' prefix) since 81c039e.

- pyproject.toml + uv.lock: 2.0.0 -> 2.0.1
- compose: openrag and openrag-admin-ui pins -> v2.0.1
- chart: version 0.5.1 -> 0.5.2, appVersion -> 2.0.1
- chart values: ray, openrag, adminUi image tags -> v2.0.1
… check

The GA image build was guarded on github.event.base_ref == 'refs/heads/main'.
That field is empty for a tag pushed to a branch-protected main: protected
main only receives PR-merge commits (server-side), never client branch pushes,
so GitHub records no branch association and base_ref comes through empty. The
guard therefore skipped every job silently — a green run that built nothing.
It worked for v2.0.0 only because main was still unprotected then.

Replace it with a verify-tag gate that the three build jobs depend on:
- fires for release tags (v*) but not RC tags (build_rc.yml owns -rc.)
- verifies the tagged commit is reachable from origin/main via merge-base,
  failing LOUD (red) instead of skipping silently if a tag is off-main

First release affected: v2.0.1.
fix(ci): make build.yml GA build fire on release tags under protected main
@coderabbitai

coderabbitai Bot commented Jul 23, 2026

Copy link
Copy Markdown

Review Change Stack

No actionable comments were generated in the recent review. 🎉

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Pro Plus

Run ID: 39c26f5f-3d9e-4bab-819d-c397a59cc2e0

📥 Commits

Reviewing files that changed from the base of the PR and between 6a18a53 and 4483394.

📒 Files selected for processing (1)
  • .github/workflows/build.yml
🚧 Files skipped from review as they are similar to previous changes (1)
  • .github/workflows/build.yml

📝 Walkthrough

Walkthrough

The release version is updated to 2.0.1 across package, Helm, and Docker Compose metadata. GA tag builds now verify ancestry from main before running the OpenRAG, Ray, and admin UI image build jobs.

Changes

Release Alignment

Layer / File(s) Summary
Release metadata and image references
pyproject.toml, infra/charts/openrag-stack/Chart.yaml, infra/charts/openrag-stack/values.yaml, infra/compose/docker-compose.yaml
Project and chart versions are bumped, and container image references are updated to 2.0.1.
GA tag validation and image build gating
.github/workflows/build.yml
GA tags are checked against origin/main, and image build jobs depend on successful tag verification.

Estimated code review effort: 3 (Moderate) | ~20 minutes

Sequence Diagram(s)

sequenceDiagram
  participant GitHubActions
  participant verify-tag
  participant origin-main
  participant image-build-jobs
  GitHubActions->>verify-tag: Start for GA release tag
  verify-tag->>origin-main: Fetch main
  verify-tag->>verify-tag: Check tagged commit is ancestor of main
  verify-tag->>image-build-jobs: Allow image builds after successful verification
Loading

Possibly related PRs

Suggested labels: chore

Suggested reviewers: ahmath-gadji, hedhoud

🚥 Pre-merge checks | ✅ 5
✅ Passed checks (5 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The title accurately summarizes this back-merge of the v2.0.1 release changes into develop.
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.
✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch backmerge/v2.0.1-into-develop

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@coderabbitai coderabbitai Bot added the chore No production code impact, typically improve tooling, code quality, etc label Jul 23, 2026
@andyne13
andyne13 requested review from Ahmath-Gadji and hedhoud July 23, 2026 20:04

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Actionable comments posted: 2

🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Inline comments:
In @.github/workflows/build.yml:
- Around line 20-22: Update the verify-tag job’s if condition to allow only refs
matching the exact GA tag format v<major>.<minor>.<patch>, excluding prerelease
suffixes and non-numeric versions; ensure downstream image build and publish
jobs remain gated by this validation.
- Around line 26-35: Update the “Fail if the tagged commit is not on main” step
to pass the tag name through its env configuration and reference the environment
variable in the shell commands, including both status messages, instead of
interpolating github.ref_name directly in run. Preserve the existing ancestor
check and failure behavior.
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Pro Plus

Run ID: 27923b82-b15f-4989-8b74-b6535d5b2447

📥 Commits

Reviewing files that changed from the base of the PR and between ecda8de and 6a18a53.

⛔ Files ignored due to path filters (1)
  • uv.lock is excluded by !**/*.lock
📒 Files selected for processing (5)
  • .github/workflows/build.yml
  • infra/charts/openrag-stack/Chart.yaml
  • infra/charts/openrag-stack/values.yaml
  • infra/compose/docker-compose.yaml
  • pyproject.toml

Comment thread .github/workflows/build.yml
Comment thread .github/workflows/build.yml Outdated

@hedhoud hedhoud left a comment

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.

The release/version back-merge itself looks consistent, but I would not merge the GA publishing guard in this shape.

The workflow still accepts broad v* tags, so a typo or non-GA prerelease tag that is reachable from main can publish release images and latest. The tag name is also interpolated directly inside the shell script for a privileged publishing workflow; Git accepts metacharacters in ref names, so this should be treated as untrusted data.

Please tighten the GA tag validation to exact release tags and pass the tag name as data in the shell step. After that, the rest of the PR looks fine to me.

@hedhoud hedhoud left a comment

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.

Adding precise anchors for the requested changes.

Comment thread .github/workflows/build.yml
Comment thread .github/workflows/build.yml Outdated
…lation

Review findings on the verify-tag gate added in #764 (raised by @hedhoud and
CodeRabbit/zizmor), all three confirmed against the merged workflow:

1. Tag format was too loose. The guard only rejected '-rc.', so v2.0.1-rc1,
   v2.0.1-beta, vfoo etc. passed and would publish GA images and move :latest.
   The rc1 case is the sharp one: build_rc.yml triggers on 'v*-rc.*' which
   requires the dot, so a one-character typo matched neither workflow's intent.
   Now validated against ^v[0-9]+\.[0-9]+\.[0-9]+$ and failed loud.

2. Template injection. ${{ github.ref_name }} expanded into the run body before
   the shell ran, and git permits ; $ ` " | & in ref names — arbitrary code
   execution in a job that holds packages:write and Docker Hub credentials.
   Tag name and SHA now passed via env: and referenced as shell variables.

3. Checkout persisted credentials, inconsistent with build_rc.yml which already
   sets persist-credentials: false on all three checkouts (95fd86f). The repo
   is public, so the origin/main fetch still works without them.

Behavior: vX.Y.Z on main builds; vX.Y.Z-rc.N skips to build_rc.yml; malformed
or prerelease tags and off-main tags now fail loudly instead of publishing.
@andyne13

Copy link
Copy Markdown
Contributor Author

Thanks @hedhoud — both findings confirmed valid, and I verified them against the merged workflow rather than just the diff.

To be precise on the first one: the -rc1 variant is the sharpest case. build_rc.yml triggers on v*-rc.*, which requires the dot — so v2.0.1-rc1 matched neither workflow's intent and would have published a release candidate as GA and moved :latest. A one-character typo. Agreed this should never have shipped in that shape.

On the second, agreed it should be treated as untrusted data: git check-ref-format permits ;, $, backtick, ", | and & in ref names, and this job holds packages: write plus Docker Hub credentials.

zizmor also flagged a third item in the same step — the checkout did not set persist-credentials: false, inconsistent with build_rc.yml, which already does on all three checkouts (95fd86fc). Fixed alongside.

Fix is in #767, targeting main, not this branch. The affected guard is already merged on main (it published v2.0.1), so pushing the fix here would leave main exposed while only develop received it.

Sequence: merge #767 into main → re-sync this PR from the new main tip so the back-merge carries the fix → merge this. Leaving #765 open and unmerged until then.

fix(ci): harden GA publish guard — exact tag format, no shell interpolation
@andyne13

Copy link
Copy Markdown
Contributor Author

@hedhoud the guard fix has landed — #767 is merged into main, and I have advanced this back-merge branch to the new main tip (44833942), so this PR now carries it.

Both of your findings are addressed here:

  • GA tags validated against ^v[0-9]+\.[0-9]+\.[0-9]+$, so v1.2.3-rc1, -beta, vfoo fail loudly instead of publishing GA images and moving :latest. Well-formed -rc. tags still route to build_rc.yml.
  • Tag name and SHA passed via env: and referenced as shell variables — no ${{ }} left in the run body.
  • Plus persist-credentials: false, matching build_rc.yml.

Diff into develop is now the 6 expected files: the version bumps plus the hardened build.yml.

Could you clear the CHANGES_REQUESTED when you get a moment? Worth noting develop is still on 2.0.0 and still has the old broken guard until this merges — so the next release cut from it would both carry the wrong version and silently skip its image builds.

@andyne13
andyne13 requested a review from hedhoud July 24, 2026 10:09

@hedhoud hedhoud left a comment

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.

Approved. The back-merge now carries the hardened GA publish guard from #767: exact GA tag validation is in place, tag/SHA values are passed through env rather than interpolated into the shell body, and the publish jobs remain gated behind verify-tag.

A few CI jobs were still pending when I checked; branch protection should keep the merge blocked until those complete.

@andyne13

Copy link
Copy Markdown
Contributor Author

Thanks @hedhoud. Resolving your build.yml:22 thread — noting why here so it is not a silent dismissal.

The comment still anchors to live code because line 22 (the job-level if) genuinely did not change: it still admits any v* tag that is not -rc.. The fix went into the step below it, which now rejects anything that is not an exact ^v[0-9]+\.[0-9]+\.[0-9]+$ and fails loudly — so v1.2.3-rc1, -beta, vfoo no longer publish GA images or move :latest. That is the change you approved in #767, and this branch now carries it.

@andyne13
andyne13 merged commit b2ab6b1 into develop Jul 24, 2026
13 checks passed
@andyne13
andyne13 deleted the backmerge/v2.0.1-into-develop branch July 24, 2026 10:17
@andyne13 andyne13 mentioned this pull request Jul 30, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

chore No production code impact, typically improve tooling, code quality, etc

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants