* chore: bump backend unit test timeout from 30 to 40 minutes
* ci: anchor langflow version grep so new workspace packages can't break it
The pattern `uv tree | grep 'langflow' | grep -v 'langflow-base' | grep -v 'langflow-sdk'`
was used in 8 places to pluck the root `langflow` (or `langflow-nightly`)
line out of `uv tree`. It relied on enumerating every other workspace
package that starts with `langflow-`. As soon as a new one was added
(`langflow-stepflow`, via #12015) the filter let two lines through and
the downstream `awk` / `cut` produced a multi-line string, e.g.:
Name langflow-stepflow
langflow-nightly does not match langflow-nightly. Exiting the workflow.
Replace the enumeration with an anchored regex
`grep -E '^langflow(-nightly)?[[:space:]]'` so only the exact `langflow`
or `langflow-nightly` root line matches, regardless of how many other
`langflow-*` workspace packages exist now or in the future.
* ci: build, test, and publish src/bundles/* wheels
Langflow main pins exact versions of every bundle (e.g.
`lfx-arxiv-nightly==0.1.0.dev38`, `lfx-arxiv==0.1.0`), but neither the
nightly workflow nor the release workflow built or published those
bundle wheels. So when cross-platform tests (or downstream consumers)
ran `pip install langflow-nightly`, the resolver couldn't find
`lfx-arxiv-nightly` / `lfx-duckduckgo-nightly` on PyPI and bailed:
Because lfx-arxiv-nightly was not found in the package registry and
langflow-nightly==1.10.0.dev38 depends on lfx-arxiv-nightly==0.1.0.dev38,
we can conclude that langflow-nightly==1.10.0.dev38 cannot be used.
Add a build → test → publish lane for every package under
`src/bundles/*/` in both workflows, plus a matching bundle install step
in cross-platform-test.yml.
`release_nightly.yml`
- `build-nightly-bundles`: iterates `src/bundles/*/pyproject.toml`,
builds each wheel, uploads as `dist-nightly-bundles`.
- `test-cross-platform` now passes `bundles-artifact-name` so the
cross-platform test installs bundles before installing main.
- `publish-nightly-bundles`: publishes each bundle wheel to PyPI after
cross-platform passes and lfx is already published.
- `publish-nightly-main` now waits on `publish-nightly-bundles` so main
reaches PyPI only after its bundle deps do.
`release.yml`
- New `release_bundles` input (false by default).
- `validate-dependencies` rejects `release_package_main=true` without
`release_bundles=true`, mirroring the existing lfx/sdk gate.
- `build-bundles`, `publish-bundles` mirror the nightly jobs.
- `publish-main` now needs `publish-bundles`.
`cross-platform-test.yml`
- New optional `bundles-artifact-name` input; download step is gated on
it being set.
- `build-if-needed` (workflow_dispatch path) also builds bundles and
publishes the artifact, so adhoc runs stay self-contained.
- Each of the four "Install main package from wheel" steps gets a
preceding "Install bundle packages from wheel" step that runs only
when the artifact is present, leaving non-bundle callers
(e.g. pre-bundle release branches) unaffected.
* ci: drop mapfile from bundle install (macOS Bash 3.2 compat)
`mapfile` is a Bash 4+ builtin and the macOS runners use the system
Bash (3.2). The "Install bundle packages from wheel (Unix)" step
failed on `Install & Run - macos amd64 3.12` with:
mapfile: command not found
find: stdout: Broken pipe
Replace with the `shopt -s nullglob` + glob-array pattern already used
in the bundle build/publish steps, which works on Bash 3.2. All
artifact wheels live at the top level of ./bundles-dist, so the simple
glob is equivalent to the previous `find` (which also wasn't recursing
anywhere useful).
---------
Co-authored-by: Claude <noreply@anthropic.com>
Backend and frontend images (langflowai/langflow-backend and
langflowai/langflow-frontend) are separate from the main image
(langflowai/langflow), so they should not be skipped when the
main version already exists on Docker Hub.
This fixes the issue where backend/frontend builds for 1.9.0
were skipped because the main 1.9.0 image was already published,
preventing these critical images from being available on Docker Hub.
Fixes: Backend and frontend Docker images not published in 1.9.0 release
(cherry picked from commit 595587027d)
* fix: Build and install the langflow-sdk for lfx (fixes nightly) (#12481)
* fix: Build and install the langflow-sdk for lfx
* Publish sdk as a nightly
* Update ci.yml
* Update python_test.yml
* Update ci.yml
* fix: Properly grep for the langflow version (#12486)
* fix: Properly grep for the langflow version
* Mount the sdk where needed
* Skip the sdk
* [autofix.ci] apply automated fixes
* Update setup.py
* fix(docker): Remove broken npm self-upgrade from Docker images (#12309)
* fix: replace grep -oP with sed for Node.js version extraction in Docker builds (#12331)
The grep -oP (PCRE regex) command fails in the python:3.12.12-slim-trixie
Docker base image because PCRE support is not available in the slim variant.
This replaces grep -oP with portable sed -nE in all 5 Dockerfiles and adds
an empty version guard to fail fast with a clear error message instead of
producing a broken download URL.
---------
Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com>
Co-authored-by: Cristhian Zanforlin Lousa <cristhian.lousa@gmail.com>
Co-authored-by: vjgit96 <vijay.katuri@ibm.com>
* chore: use self hosted ephemeral runner
In November and periodically since we have ran into issue with runners hanging and not properly cleaning themselves up causing our CI/CD pipeline to fail due to timeout or self canceling.
* chore: add actionlint for selfhosted runners
* fix: skip nightly test when skip flags are set
* fix: json string format
* chore: change to use run_on string directly
${{ inputs['runs_on'] || github.event.inputs['runs_on'] || 'ubuntu-latest' }}
* chore: use self hosted ephemeral runner
* chore: use self hosted ephemeral runner
* chore: use self hosted ephemeral runner
* chore: revert ephemeral runner testing changes, restore main-only guards
---------
Co-authored-by: vijay kumar katuri <vijay.katuri@ibm.com>
* feat: create prerelease dedicated to qa
allow prerelease versions dedicated to qa
* chore: revert lfx dep to 0.2.1
* chore: lfx pyproject version 0.2.1 for testing
* feat: use pythin script to determine rc version
use a python script to auto incremenet rc version so we do not have to manually maintain what rc version we are on.
add it to both release.yml and docker-build-v2.yml for pypi, docker and ghrc.
* [autofix.ci] apply automated fixes
* chore: change script vars to more meaningful ones
* chore: add meaningful echos
* chore: add quotes to pass empty str if no version
* test: REVERT always pass ci REVERT
* chore: add normalization to built ver tests
* chore: remove unused uv environment set up
* chore: add back in checkout code
* chore: disable caching for ensure-lfx-published
* chore: revert changes added after merge
* fix: allow prerelase python install flag
* chore: test base and main install as 1
* chore: seperate base and main
* chore: install main using local base first
* chore: try using reinstall
* chore: create locl directory and use it first
* chore: try --no-deps
* chore: langflow-*.whl
* [autofix.ci] apply automated fixes
* fix: try using unsafe-best-match
use ./local-packages --index-strategy unsafe-best-match
* fix: add a dynamic constriant for langflow base
add a dynamic constriant for langflow base during build-main. if this works I will need to go back and remove any unneeded cross-platform test changes
* chore: revert to normal install
* fix: add pre-main option to make build
* chore: remove hyphen in make var
* chore: keep propigation wait for pre-release
* chore: revert cross-platform-test.yml changes
* chore: use else ifdef and add test echos
* chore: remove --no-soruces
* chore: use ifeq
* chore: revert lfx 0.2.1
* chore: downgrade to python 3.12
ragstack-ai-knowledge-store does not support pythong 3.13
* chore: add else to Makefile
* chore: back to ifdef
* chore: reset to Makefile to main and add pre again
* chore: revert to python 3.13
* chore: set compatability check to 3.12
hopeffuly fixes
Found 1 incompatibility
The package `ragstack-ai-knowledge-store` requires Python >=3.9, <3.13, but `3.13.11` is installed
* [autofix.ci] apply automated fixes
* fix: new flow reset.
* chore: update LFX Determine version
* fix: remove buil-lfx dep on lfx release
* chore: remove more inputs.release_lfx if statments
* fix: uv pip install --find-links
* chore: create uv venv before uv pip install
* chire: attempt for reinatll of local whls
* fix: add OBJC_DISABLE_INITIALIZE_FORK_SAFETY: YES
add OBJC_DISABLE_INITIALIZE_FORK_SAFETY: YES to macos cross-platform test builds
* [autofix.ci] apply automated fixes
* chore: add back in ci step
* fix(ci): correctly generate pre-release rc tags
* [autofix.ci] apply automated fixes
* feat: update pre-release flow to be useable for qa
* Revert "feat: update pre-release flow to be useable for qa"
This reverts commit 22737729a2d0ed64ea774a30af070f0010cba9e1.
* feat: update pre-release flow to be useable for qa
* [autofix.ci] apply automated fixes
* [autofix.ci] apply automated fixes
* [autofix.ci] apply automated fixes (attempt 2/3)
* feat: update pre-release flow to be useable for qa
* feat: update pre-release flow to be useable for qa
* feat: update pre-release flow to be useable for qa
* [autofix.ci] apply automated fixes
---------
Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com>
Co-authored-by: vijay kumar katuri <vijaykaturi@vijays-MacBook-Air.local>
Co-authored-by: vijay kumar katuri <vijay.katuri@ibm.com>
* Add nightly hash history script to nightly workflow
* [autofix.ci] apply automated fixes
* [autofix.ci] apply automated fixes (attempt 2/3)
* Add lfx-nightly to script
* Handle first run
* Try fixing version on nightly hash history
* remove lfx lockfile since it does not exist
* Get full version in build, handle the [extras] in pyprojects
* [autofix.ci] apply automated fixes
* [autofix.ci] apply automated fixes (attempt 2/3)
* language update
* Handle extras in langflow-base dependency in all workflows
* [autofix.ci] apply automated fixes
* Fix import in lfx status response
* [autofix.ci] apply automated fixes
* Use built artifact for jobs, remove wait period
* use [complete] when building test cli job
* skip slack message added to success
* Update merge hash histry job to only run when ref is main
* Updates pyproject naming to add nightly suffix
* [autofix.ci] apply automated fixes
* Fix ordering of lfx imports'
* [autofix.ci] apply automated fixes
* Ah, ignore auto-import fixes by ruff
* [autofix.ci] apply automated fixes
* update test to look at _all_ exported instead
* [autofix.ci] apply automated fixes
* perf: Limit enum options in tool schemas to reduce token usage (#11370)
* fix current date tokens usage
* Update src/lfx/src/lfx/io/schema.py
* remove comment
---------
Co-authored-by: Himavarsha <40851462+HimavarshaVS@users.noreply.github.com>
* update date test to reflect changes to lfx
* ruff
* [autofix.ci] apply automated fixes
---------
Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com>
Co-authored-by: Cristhian Zanforlin Lousa <cristhian.lousa@gmail.com>
Co-authored-by: Himavarsha <40851462+HimavarshaVS@users.noreply.github.com>
* ci: publish v2 docker images
since or transition to v2 in 1.6.x we have not been publishing any of our docker images.
* chore: try fixing lfx cleanup error
lfx cleanup error
* chore: address rabbitcode comments
* chore: address rabit uv comment
* chore: remove build-args to see if it passes
* chore: skip ci
* chore: add back in LANGFLOW_IMAGE
* chore: debug inputs.ref and matrix.langflow_image
* chore: add {} to fix InvalidDefaultArgInForm
* chore: try adding quotes
* chore: try ENV LANGFLOW_IMAGE=${LANGFLOW_IMAGE}
* chore: add build args to GitHub Container Registry
* chore: clean up
* chore: seperate out frontend and backend images
* chore: update create-manifest
* chore: remove ci step
* chore: update release
* chore: clean up
* chore: clean up langflow-image
* chore: revert ci removal
* fix: add back in main logic update back/frontend
add main back in
update back/frontend to match orginal man logic more
* chore: more clean up to match main
* chore: remove arch from lagnflowimage for backend
* chore: add misisng - for ghcr.io
* chore: skip ci
* chore: build_main and build_and_push_backend fixes
* chore: seperate ghcr and docker publishing with if
* chore: add back CI step
---------
Co-authored-by: Adam Aghili <Adam.Aghili@ibm.com>
* Allow skipping lfx for 1.6.1 release
* just remove all lfx for now
* validate deps step
* Make docker builds dependent on CI success
* Wrap release conditionals correctly in {{ }}
* just wrap all conditionals
* Try removing the if in CI job?
* Always run all tests on release
* Try simplifying the runs-on
* Pass ref correctly in ci for testing
* correct input name
* skip lfx tests
* Fail if version is already published
* Fix nightly docker tags
* update node version to 22
* Fix runners
* Fix comm to get version from uv tree
* Add dry run mode
* That is hilarious. Github only allows 10 inputs
* Fix getting version for base manifest
* Add provenance to ensure attestation manifest is not created with platform tag
* Fix nightly version extraction and attestaion manifest
* Use better version extraction snippet
* Fix repo name for nightly-all
* Add back lfx steps
* reduce github inputs to 10 by making docker-ep dependent on main
* Add warning that lfx is not impl yet
* Try skipping gha cache
* simplify docker builds
* remove workflow dispatch options from workflows that shouldn't be run manually
* Update nightly docker build and add option to skip testing for nightly releases
* simplify version fetching for both release workflows
* revert docker-build v1 to original
* remove removed input
* Add push to registry flag for full workflow and add warning in old docker build workflow
* Add uv setup
* Add uv setup again
* Try esbuild js native build
* require a valid tag for release
* Echo inputs
* Reference inputs correctly
* Try updating conditional
* removes lfx temporarily for the 1.6 release
* Fix boolean comparison
* Add flag to allow creation of github release after pypi already exists
* Add always to make it run
* Use correct tag and remove commit since it's the tag for release
* allow updates
* Revert the lfx removals and flags to allow building without releasing
* standardize conditional inputs
* clean version check
* temporary skip of jobs in release; revert me
* Add arm64 to options
* Try rustflags env var
* echo the should_run_ci as well