Skip to content

ci: stop publishing -nightly bundle variants; release bundles on demand#13206

Merged
erichare merged 1 commit into
mainfrom
ci/drop-nightly-bundle-variants
May 19, 2026
Merged

ci: stop publishing -nightly bundle variants; release bundles on demand#13206
erichare merged 1 commit into
mainfrom
ci/drop-nightly-bundle-variants

Conversation

@erichare
Copy link
Copy Markdown
Collaborator

@erichare erichare commented May 19, 2026

Summary

Stop producing lfx-arxiv-nightly / lfx-duckduckgo-nightly (and any future src/bundles/* nightly variants) and replace the cadence-driven publish with a manually-triggered workflow. Bundles change rarely enough that a nightly release loop is overkill — langflow-nightly will just pick up the same stable lfx-arxiv / lfx-duckduckgo versions that langflow releases depend on.

What changed

  • .github/workflows/nightly_build.yml — dropped the update_bundle_versions.py invocation and the src/bundles/*/pyproject.toml git-add guard, so the nightly tag-creation job no longer renames bundles or commits modified bundle pyprojects.
  • .github/workflows/release_nightly.yml — removed build-nightly-bundles and publish-nightly-bundles jobs and untethered test-cross-platform and publish-nightly-main from them.
  • .github/workflows/release_bundles.yml (new)workflow_dispatch-only workflow that builds every src/bundles/*/pyproject.toml, runs a small cross-OS install smoke test, then publishes wheels to PyPI under their stable names. Tolerates the PyPI "already exists" response so re-running without a version bump is a no-op per-bundle rather than a hard failure. Has a dry_run input for build-and-test-only runs.

release.yml is unchanged — its build-bundles / publish-bundles jobs still publish stable bundles alongside main releases when release_bundles=true. The new workflow is for ad-hoc bundle-only releases between main releases.

Manual follow-up

Once this lands, a PyPI admin should delete the lfx-arxiv-nightly and lfx-duckduckgo-nightly projects from PyPI (per the Slack discussion — neither is referenced by anything still published).

Summary by CodeRabbit

  • New Features

    • Introduced manual bundle release workflow with cross-platform smoke testing (Linux, macOS, Windows) and optional PyPI publishing capability, including dry-run mode for testing.
  • Chores

    • Streamlined nightly build and release workflows by removing intermediate version management steps.
    • Updated CI/CD scanning baseline metadata.

Review Change Stack

Bundles (lfx-arxiv, lfx-duckduckgo) change infrequently enough that a
nightly cadence is overkill. Drop the rename-to-`-nightly` and bundle
publish lanes from the nightly pipeline and add a dedicated
workflow_dispatch-only release_bundles.yml for purposeful releases.

- nightly_build.yml: drop update_bundle_versions.py invocation and the
  src/bundles/*/pyproject.toml git-add guard.
- release_nightly.yml: remove build-nightly-bundles and
  publish-nightly-bundles jobs; untether test-cross-platform and
  publish-nightly-main from them.
- release_bundles.yml (new): build all src/bundles/* wheels, run a
  cross-OS install smoke test, then publish to PyPI under their stable
  names. Tolerates already-published versions so re-runs without a
  version bump are no-ops.

release.yml still owns bundle publishing as part of main releases.

Manual follow-up (PyPI admin): delete the lfx-arxiv-nightly and
lfx-duckduckgo-nightly projects from PyPI.
@coderabbitai
Copy link
Copy Markdown
Contributor

coderabbitai Bot commented May 19, 2026

Caution

Review failed

Pull request was closed or merged during review

No actionable comments were generated in the recent review. 🎉

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Pro

Run ID: 07268a77-6714-4405-a4f6-5dd7a4e5557c

📥 Commits

Reviewing files that changed from the base of the PR and between 9882f9f and efa1117.

📒 Files selected for processing (4)
  • .github/workflows/nightly_build.yml
  • .github/workflows/release_bundles.yml
  • .github/workflows/release_nightly.yml
  • .secrets.baseline
💤 Files with no reviewable changes (1)
  • .github/workflows/nightly_build.yml

Walkthrough

This PR decouples bundle releases from the nightly CI/CD pipeline by introducing a new standalone release_bundles.yml workflow, simplifying nightly_build.yml to remove bundle-specific logic, updating release_nightly.yml to remove bundle publishing dependencies, and adjusting .secrets.baseline metadata for line number shifts.

Changes

Bundle Release Workflow Refactor

Layer / File(s) Summary
New standalone bundle release workflow
.github/workflows/release_bundles.yml
Adds manual dispatch workflow to build, test, and publish Python bundle wheels from src/bundles/*/pyproject.toml across Linux/macOS/Windows with configurable release_tag and dry_run inputs; publish job treats existing/duplicate package errors as non-fatal.
Simplify nightly build by removing bundle logic
.github/workflows/nightly_build.yml
Removes conditional update_bundle_versions.py execution and bundle pyproject.toml staging from nightly tag creation, streamlining the version update sequence.
Decouple nightly release from bundle publishing
.github/workflows/release_nightly.yml
Removes bundle artifact dependency from test-cross-platform job and bundle publishing requirement from publish-nightly-main job, which now depends only on core nightly builds and base publishing.
Update secrets baseline for line number changes
.secrets.baseline
Adjusts recorded secret line numbers for workflow modifications and updates baseline generation timestamp.

Estimated code review effort

🎯 3 (Moderate) | ⏱️ ~20 minutes

Possibly related PRs

  • langflow-ai/langflow#13193: Adds the update_bundle_versions.py script and wires bundle rename logic into nightly build, which directly conflicts with this PR's removal of that same logic.
  • langflow-ai/langflow#13195: Reintroduces bundle version renaming and bundle pyproject staging in nightly workflow, directly counteracting the simplifications in this PR.
🚥 Pre-merge checks | ✅ 9
✅ Passed checks (9 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The title accurately reflects the main changes: removing automated nightly bundle publishing and adding on-demand release workflow.
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.
Test Coverage For New Implementations ✅ Passed PR changes are GitHub Actions workflows (YAML), not production code. Workflows aren't unit tested in this project. No convention exists for workflow tests. Actionlint validates syntax.
Test Quality And Coverage ✅ Passed This PR contains only CI/CD workflow configuration changes (YAML files) and metadata updates. No new code implementations were added, therefore the test quality check is not applicable.
Test File Naming And Structure ✅ Passed Custom check on test file naming/structure is not applicable. PR only modifies GitHub Actions workflows (.yml) and secrets baseline file—no test files added, modified, or removed.
Excessive Mock Usage Warning ✅ Passed Custom check for excessive mock usage in tests is not applicable. PR only modifies GitHub Actions workflows and config files, with no changes to test files.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.

✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch ci/drop-nightly-bundle-variants

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 and usage tips.

@erichare erichare enabled auto-merge May 19, 2026 16:22
@erichare erichare disabled auto-merge May 19, 2026 16:22
@erichare erichare merged commit baceda7 into main May 19, 2026
103 of 104 checks passed
@erichare erichare deleted the ci/drop-nightly-bundle-variants branch May 19, 2026 16:23
@codecov
Copy link
Copy Markdown

codecov Bot commented May 19, 2026

Codecov Report

✅ All modified and coverable lines are covered by tests.
✅ Project coverage is 53.01%. Comparing base (5620ce1) to head (efa1117).
⚠️ Report is 4 commits behind head on main.

Additional details and impacted files

Impacted file tree graph

@@            Coverage Diff             @@
##             main   #13206      +/-   ##
==========================================
- Coverage   53.12%   53.01%   -0.12%     
==========================================
  Files        2033     2033              
  Lines      184171   184171              
  Branches    26195    26240      +45     
==========================================
- Hits        97843    97633     -210     
- Misses      85219    85428     +209     
- Partials     1109     1110       +1     
Flag Coverage Δ
backend 56.19% <ø> (-0.03%) ⬇️
frontend 52.97% <ø> (-0.16%) ⬇️
lfx 50.06% <ø> (-0.01%) ⬇️

Flags with carried forward coverage won't be shown. Click here to find out more.
see 155 files with indirect coverage changes

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.
  • 📦 JS Bundle Analysis: Save yourself from yourself by tracking and limiting bundle sizes in JS merges.

@github-actions
Copy link
Copy Markdown
Contributor

Frontend Unit Test Coverage Report

Coverage Summary

Lines Statements Branches Functions
Coverage: 35%
35.47% (40695/114715) 68.12% (5605/8227) 35.95% (943/2623)

Unit Test Results

Tests Skipped Failures Errors Time
4018 0 💤 0 ❌ 0 🔥 8m 18s ⏱️

erichare added a commit that referenced this pull request May 19, 2026
… (#13210)

* ci: stop publishing -nightly bundle variants; release bundles on demand (#13206)

Bundles (lfx-arxiv, lfx-duckduckgo) change infrequently enough that a
nightly cadence is overkill. Drop the rename-to-`-nightly` and bundle
publish lanes from the nightly pipeline and add a dedicated
workflow_dispatch-only release_bundles.yml for purposeful releases.

- nightly_build.yml: drop update_bundle_versions.py invocation and the
  src/bundles/*/pyproject.toml git-add guard.
- release_nightly.yml: remove build-nightly-bundles and
  publish-nightly-bundles jobs; untether test-cross-platform and
  publish-nightly-main from them.
- release_bundles.yml (new): build all src/bundles/* wheels, run a
  cross-OS install smoke test, then publish to PyPI under their stable
  names. Tolerates already-published versions so re-runs without a
  version bump are no-ops.

release.yml still owns bundle publishing as part of main releases.

Manual follow-up (PyPI admin): delete the lfx-arxiv-nightly and
lfx-duckduckgo-nightly projects from PyPI.

* ci(release_bundles): build lfx wheel locally for smoke test (#13207)

The release_bundles.yml smoke test installs bundle wheels into a fresh
venv, which makes uv resolve their `lfx>=X.Y,<Z` pin against PyPI. When
bundles are released ahead of a matching lfx (typical case — bundles
ship more often than lfx bumps land on PyPI), the resolve fails:

  Because only lfx<=0.4.3 is available and lfx-arxiv==0.1.0 depends on
  lfx>=0.5.0,<0.6.0, we can conclude that lfx-arxiv==0.1.0 cannot be
  used.

Build the lfx wheel from the current ref in the build-bundles job and
install it alongside the bundle wheels in the smoke test. The lfx
wheel ships as a separate `dist-lfx-smoketest` artifact and is NOT
included in the publish-bundles step — only the `dist-bundles`
artifact gets pushed to PyPI.

* ci(nightly): re-pin bundle lfx deps to lfx-nightly during nightly build (#13208)

The nightly pipeline renames the workspace `lfx` package to `lfx-nightly`
in `src/lfx/pyproject.toml` and the root workspace dep, but leaves each
`src/bundles/*/pyproject.toml`'s `"lfx>=X.Y,<Z"` pin unchanged. With the
workspace `lfx` gone and PyPI still on lfx 0.4.3, the create-nightly-tag
job's `uv lock` fails:

  × No solution found when resolving dependencies for split [...]
  ╰─▶ Because only lfx<=0.4.3 is available and lfx-arxiv depends on
      lfx>=0.5.0,<0.6.0, we can conclude that lfx-arxiv's requirements
      are unsatisfiable.

`update_lfx_version.py` now also rewrites the `lfx` (or already-rewritten
`lfx-nightly`) specifier in every `src/bundles/*/pyproject.toml` to
`lfx-nightly==<dev version>`, mirroring how `update_lf_base_dependency`
re-pins the lfx dep inside `langflow-base`. The lookahead in the regex
prevents matching sibling packages like `lfx-arxiv` / `lfx-duckduckgo`.

No-op when no bundle pyprojects exist (e.g. on main today), so this is
safe to merge ahead of the bundle extraction landing on main. Restored
the guarded `git add src/bundles/*/pyproject.toml` step so the modified
bundle pyprojects ride the same commit/tag as the rest of the nightly
version bumps.

Cherry-pick to release-1.10.0 to unblock nightlies cut from that branch.
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.

1 participant