Skip to content

Commit bfc8224

Browse files
committed
fix(ci): publish langflow-core nightlies
1 parent 54281f7 commit bfc8224

5 files changed

Lines changed: 202 additions & 33 deletions

File tree

.github/workflows/cross-platform-test.yml

Lines changed: 44 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,10 @@ on:
1414
description: "Name of the base package artifact"
1515
required: true
1616
type: string
17+
core-artifact-name:
18+
description: "Name of the langflow-core package artifact"
19+
required: false
20+
type: string
1721
main-artifact-name:
1822
description: "Name of the main package artifact"
1923
required: true
@@ -258,6 +262,13 @@ jobs:
258262
name: ${{ inputs.base-artifact-name || needs.build-if-needed.outputs.base-artifact-name || 'adhoc-dist-base' }}
259263
path: ./base-dist
260264

265+
- name: Download langflow-core package artifact
266+
if: steps.install-method.outputs.method == 'wheel' && inputs.core-artifact-name != ''
267+
uses: actions/download-artifact@v7
268+
with:
269+
name: ${{ inputs.core-artifact-name }}
270+
path: ./core-dist
271+
261272
- name: Download main package artifact
262273
if: steps.install-method.outputs.method == 'wheel'
263274
uses: actions/download-artifact@v7
@@ -291,7 +302,7 @@ jobs:
291302
292303
refresh_find_links() {
293304
FIND_LINKS=()
294-
for wheel_dir in ./sdk-dist ./lfx-dist ./base-dist ./bundles-dist; do
305+
for wheel_dir in ./sdk-dist ./lfx-dist ./base-dist ./core-dist ./bundles-dist; do
295306
if [ -d "$wheel_dir" ]; then
296307
FIND_LINKS+=(--find-links "$wheel_dir")
297308
fi
@@ -325,6 +336,11 @@ jobs:
325336
BASE_WHEELS=(./base-dist/*.whl)
326337
install_wheels "base" "${BASE_WHEELS[@]}"
327338
339+
CORE_WHEELS=(./core-dist/*.whl)
340+
if [ ${#CORE_WHEELS[@]} -gt 0 ]; then
341+
install_wheels "core" "${CORE_WHEELS[@]}"
342+
fi
343+
328344
if [ -d ./bundles-dist ]; then
329345
BUNDLE_WHEELS=(./bundles-dist/*.whl)
330346
install_wheels "bundle" "${BUNDLE_WHEELS[@]}"
@@ -560,6 +576,13 @@ jobs:
560576
name: ${{ inputs.base-artifact-name || needs.build-if-needed.outputs.base-artifact-name || 'adhoc-dist-base' }}
561577
path: ./base-dist
562578

579+
- name: Download langflow-core package artifact
580+
if: steps.install-method.outputs.method == 'wheel' && inputs.core-artifact-name != ''
581+
uses: actions/download-artifact@v7
582+
with:
583+
name: ${{ inputs.core-artifact-name }}
584+
path: ./core-dist
585+
563586
- name: Download main package artifact
564587
if: steps.install-method.outputs.method == 'wheel'
565588
uses: actions/download-artifact@v7
@@ -593,7 +616,7 @@ jobs:
593616
594617
refresh_find_links() {
595618
FIND_LINKS=()
596-
for wheel_dir in ./sdk-dist ./lfx-dist ./base-dist ./bundles-dist; do
619+
for wheel_dir in ./sdk-dist ./lfx-dist ./base-dist ./core-dist ./bundles-dist; do
597620
if [ -d "$wheel_dir" ]; then
598621
FIND_LINKS+=(--find-links "$wheel_dir")
599622
fi
@@ -623,6 +646,11 @@ jobs:
623646
BASE_WHEELS=(./base-dist/*.whl)
624647
install_wheels "base" "${BASE_WHEELS[@]}"
625648
649+
CORE_WHEELS=(./core-dist/*.whl)
650+
if [ ${#CORE_WHEELS[@]} -gt 0 ]; then
651+
install_wheels "core" "${CORE_WHEELS[@]}"
652+
fi
653+
626654
if [ -d ./bundles-dist ]; then
627655
BUNDLE_WHEELS=(./bundles-dist/*.whl)
628656
install_wheels "bundle" "${BUNDLE_WHEELS[@]}"
@@ -645,12 +673,12 @@ jobs:
645673
run: |
646674
# Expose the local wheel dirs so dependency re-resolution (the
647675
# pre-release path below drops --no-deps) can find the local
648-
# pre-release lfx/base wheels. Without these, uv re-resolves
676+
# pre-release lfx/base/core wheels. Without these, uv re-resolves
649677
# langflow-base's `lfx>=X.Y.Zrc0` constraint against PyPI only, where
650678
# the matching rc/dev wheel is not published yet, and fails with
651679
# "No solution found when resolving dependencies".
652680
FIND_LINKS=()
653-
for wheel_dir in ./sdk-dist ./lfx-dist ./base-dist ./bundles-dist; do
681+
for wheel_dir in ./sdk-dist ./lfx-dist ./base-dist ./core-dist ./bundles-dist; do
654682
if [ -d "$wheel_dir" ]; then
655683
FIND_LINKS+=(--find-links "$wheel_dir")
656684
fi
@@ -706,19 +734,24 @@ jobs:
706734
fi
707735
uv pip install --force-reinstall $NO_DEPS --prerelease=if-necessary-or-explicit "${FIND_LINKS[@]}" --python ./test-env/Scripts/python.exe "${INSTALL_WHEELS[@]}"
708736
fi
737+
738+
CORE_WHEEL=$(find ./core-dist -name "*.whl" -type f 2>/dev/null | head -1 || true)
739+
if [ -n "$CORE_WHEEL" ]; then
740+
uv pip install --force-reinstall --no-deps --python ./test-env/Scripts/python.exe "$CORE_WHEEL"
741+
fi
709742
shell: bash
710743

711744
- name: Force reinstall local wheels to prevent downgrades (Unix)
712745
if: steps.install-method.outputs.method == 'wheel' && matrix.os != 'windows'
713746
run: |
714747
# Expose the local wheel dirs so dependency re-resolution (the
715748
# pre-release path below drops --no-deps) can find the local
716-
# pre-release lfx/base wheels. Without these, uv re-resolves
749+
# pre-release lfx/base/core wheels. Without these, uv re-resolves
717750
# langflow-base's `lfx>=X.Y.Zrc0` constraint against PyPI only, where
718751
# the matching rc/dev wheel is not published yet, and fails with
719752
# "No solution found when resolving dependencies".
720753
FIND_LINKS=()
721-
for wheel_dir in ./sdk-dist ./lfx-dist ./base-dist ./bundles-dist; do
754+
for wheel_dir in ./sdk-dist ./lfx-dist ./base-dist ./core-dist ./bundles-dist; do
722755
if [ -d "$wheel_dir" ]; then
723756
FIND_LINKS+=(--find-links "$wheel_dir")
724757
fi
@@ -774,6 +807,11 @@ jobs:
774807
fi
775808
uv pip install --force-reinstall $NO_DEPS --prerelease=if-necessary-or-explicit "${FIND_LINKS[@]}" --python ./test-env/bin/python "${INSTALL_WHEELS[@]}"
776809
fi
810+
811+
CORE_WHEEL=$(find ./core-dist -name "*.whl" -type f 2>/dev/null | head -1 || true)
812+
if [ -n "$CORE_WHEEL" ]; then
813+
uv pip install --force-reinstall --no-deps --python ./test-env/bin/python "$CORE_WHEEL"
814+
fi
777815
shell: bash
778816

779817
# PyPI installation steps

.github/workflows/nightly_build.yml

Lines changed: 5 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -107,12 +107,11 @@ jobs:
107107
run: |
108108
echo "PWD: $(pwd)"
109109
find . -name "pypi_nightly_tag.py"
110-
- name: Generate shared nightly tag (main == base, lockstep)
110+
- name: Generate shared nightly tag (main == core == base, lockstep)
111111
id: generate_shared_tag
112112
run: |
113-
# langflow (nightly .devN pre-release) pins langflow-base[complete]==<exact dev>, so
114-
# both tags MUST be identical. Compute them in ONE invocation (single PyPI snapshot)
115-
# so they cannot drift across separate calls.
113+
# langflow -> langflow-core -> langflow-base uses exact nightly dev pins,
114+
# so all three versions MUST be identical. Compute from one PyPI snapshot.
116115
# NOTE: This outputs the tag with the `v` prefix.
117116
TAGS_OUTPUT="$(uv run ./scripts/ci/pypi_nightly_tag.py both)"
118117
RELEASE_TAG="$(printf '%s\n' "$TAGS_OUTPUT" | sed -n '1p')"
@@ -165,13 +164,13 @@ jobs:
165164
uv run --no-sync ./scripts/ci/update_sdk_version.py $SDK_TAG
166165
echo "Updating LFX project version to $LFX_TAG"
167166
uv run --no-sync ./scripts/ci/update_lfx_version.py $LFX_TAG $SDK_TAG
168-
echo "Updating base project version to $BASE_TAG and updating main project version to $RELEASE_TAG"
167+
echo "Updating base/core/main project versions to the shared nightly tag"
169168
uv run --no-sync ./scripts/ci/update_pyproject_combined.py main $RELEASE_TAG $BASE_TAG $LFX_TAG
170169
171170
uv lock
172171
cd src/lfx && uv lock && cd ../..
173172
174-
git add pyproject.toml src/backend/base/pyproject.toml src/lfx/pyproject.toml \
173+
git add pyproject.toml src/langflow-core/pyproject.toml src/backend/base/pyproject.toml src/lfx/pyproject.toml \
175174
src/lfx/src/lfx/_assets/component_index.json src/sdk/pyproject.toml uv.lock
176175
# The nightly keeps canonical package names and the stable `lfx-*` bundles
177176
# are not modified (see src/bundles/NIGHTLY.md), so no bundle pyprojects ride this commit.

0 commit comments

Comments
 (0)