feat: added install matrix before release (#9205)

* added install matrix before release

* adds ad-hoc testing

* temp enable test

* test changes

* fix test config

* fix package install

* commonize code

* renamed files

* fix issue

* remvoe run id

* fix base build

* revert main package build change

* fix build

* fix upload

* revert ci to main

* updated release workflow naming

* add cross-platform tests to nightly build
This commit is contained in:
Eric Pinzur 2025-07-30 21:57:59 +02:00 • committed by GitHub
commit e1d3e741fd
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
6 changed files with 735 additions and 49 deletions

View file

@ -54,8 +54,8 @@ jobs:
secrets: inherit
release-base:
name: Release Langflow Base
build-base:
name: Build Langflow Base
needs: [ci]
if: inputs.release_package_base == true
runs-on: ubuntu-latest
@ -113,12 +113,9 @@ jobs:
else
echo "Server terminated successfully"
fi
- name: Publish to PyPI
if: steps.check-version.outputs.skipped == 'false'
env:
UV_PUBLISH_TOKEN: ${{ secrets.PYPI_API_TOKEN }}
run: |
make publish base=true
# PyPI publishing moved to after cross-platform testing
- name: Upload Artifact
if: steps.check-version.outputs.skipped == 'false'
uses: actions/upload-artifact@v4
@ -126,10 +123,10 @@ jobs:
name: dist-base
path: src/backend/base/dist
release-main:
name: Release Langflow Main
build-main:
name: Build Langflow Main
if: inputs.release_package_main == true
needs: [release-base]
needs: [build-base]
runs-on: ubuntu-latest
outputs:
version: ${{ steps.check-version.outputs.version }}
@ -172,7 +169,7 @@ jobs:
echo version=$version >> $GITHUB_OUTPUT
fi
- name: Wait for PyPI Propagation
if: needs.release-base.outputs.skipped == 'false'
if: needs.build-base.outputs.skipped == 'false'
run: sleep 300 # wait for 5 minutes to ensure PyPI propagation
- name: Build project for distribution
@ -194,25 +191,78 @@ jobs:
else
echo "Server terminated successfully"
fi
- name: Publish to PyPI
env:
UV_PUBLISH_TOKEN: ${{ secrets.PYPI_API_TOKEN }}
run: |
make publish main=true
# PyPI publishing moved to after cross-platform testing
- name: Upload Artifact
uses: actions/upload-artifact@v4
with:
name: dist-main
path: dist
test-cross-platform:
name: Test Cross-Platform Installation
if: inputs.release_package_base == true || inputs.release_package_main == true
needs: [build-base, build-main]
uses: ./.github/workflows/cross-platform-test.yml
with:
base-artifact-name: "dist-base"
main-artifact-name: "dist-main"
test-timeout: 120
publish-base:
name: Publish Langflow Base to PyPI
if: inputs.release_package_base == true
needs: [build-base, test-cross-platform]
runs-on: ubuntu-latest
steps:
- name: Download base artifact
uses: actions/download-artifact@v4
with:
name: dist-base
path: src/backend/base/dist
- name: Setup Environment
uses: astral-sh/setup-uv@v6
with:
enable-cache: false
python-version: "3.13"
- name: Publish base to PyPI
if: needs.build-base.outputs.skipped == 'false'
env:
UV_PUBLISH_TOKEN: ${{ secrets.PYPI_API_TOKEN }}
run: |
cd src/backend/base && uv publish dist/*.whl
publish-main:
name: Publish Langflow Main to PyPI
if: inputs.release_package_main == true
needs: [build-main, test-cross-platform, publish-base]
runs-on: ubuntu-latest
steps:
- name: Download main artifact
uses: actions/download-artifact@v4
with:
name: dist-main
path: dist
- name: Setup Environment
uses: astral-sh/setup-uv@v6
with:
enable-cache: false
python-version: "3.13"
- name: Publish main to PyPI
env:
UV_PUBLISH_TOKEN: ${{ secrets.PYPI_API_TOKEN }}
run: |
uv publish dist/*.whl
call_docker_build_base:
name: Call Docker Build Workflow for Langflow Base
if: inputs.build_docker_base == true
needs: [release-base, release-main]
needs: [publish-base, publish-main]
uses: ./.github/workflows/docker-build.yml
with:
base_version: ${{ needs.release-base.outputs.version }}
main_version: ${{ needs.release-main.outputs.version }}
base_version: ${{ needs.publish-base.needs.build-base.outputs.version }}
main_version: ${{ needs.publish-main.needs.build-main.outputs.version }}
release_type: base
pre_release: ${{ inputs.pre_release }}
secrets: inherit
@ -220,10 +270,10 @@ jobs:
call_docker_build_main_ep:
name: Call Docker Build Workflow for Langflow with Entrypoint
if: inputs.build_docker_ep == true
needs: [release-main, call_docker_build_base]
needs: [publish-main, call_docker_build_base]
uses: ./.github/workflows/docker-build.yml
with:
main_version: ${{ needs.release-main.outputs.version }}
main_version: ${{ needs.publish-main.needs.build-main.outputs.version }}
release_type: main-ep
pre_release: False
secrets: inherit
@ -231,10 +281,10 @@ jobs:
call_docker_build_main:
name: Call Docker Build Workflow for Langflow
if: inputs.build_docker_main == true
needs: [release-main, call_docker_build_main_ep]
needs: [publish-main, call_docker_build_main_ep]
uses: ./.github/workflows/docker-build.yml
with:
main_version: ${{ needs.release-main.outputs.version }}
main_version: ${{ needs.publish-main.needs.build-main.outputs.version }}
release_type: main
pre_release: ${{ inputs.pre_release }}
secrets: inherit
@ -242,10 +292,10 @@ jobs:
call_docker_build_main_all:
name: Call Docker Build Workflow for langflow-all
if: inputs.build_docker_main == true
needs: [release-main]
needs: [publish-main]
uses: ./.github/workflows/docker-build.yml
with:
main_version: ${{ needs.release-main.outputs.version }}
main_version: ${{ needs.publish-main.needs.build-main.outputs.version }}
release_type: main-all
pre_release: ${{ inputs.pre_release }}
secrets: inherit
@ -254,7 +304,7 @@ jobs:
create_release:
name: Create Release
runs-on: ubuntu-latest
needs: release-main
needs: publish-main
steps:
- uses: actions/download-artifact@v4
with:
@ -268,5 +318,5 @@ jobs:
draft: false
generateReleaseNotes: true
prerelease: ${{ inputs.pre_release }}
tag: ${{ needs.release-main.outputs.version }}
tag: ${{ needs.publish-main.needs.build-main.outputs.version }}
commit: ${{ github.ref }}