Skip to content

ci: fix release workflows for uv #4053

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 11 commits into from
Oct 7, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 0 additions & 5 deletions .github/actions/setup-uv/action.yml
Original file line number Diff line number Diff line change
@@ -1,10 +1,5 @@
name: "Setup uv"
description: "Checks out code, installs uv, and sets up Python environment"
inputs:
ref:
description: "Reference to check out"
required: false
default: "github.ref"

runs:
using: "composite"
Expand Down
13 changes: 3 additions & 10 deletions .github/workflows/docker-build.yml
Original file line number Diff line number Diff line change
Expand Up @@ -103,9 +103,6 @@ jobs:
persist-credentials: true
- name: "Setup Environment"
uses: ./.github/actions/setup-uv
with:
ref: ${{ inputs.nightly_tag_main || github.ref }}

- name: Install the project
run: uv sync --dev

Expand Down Expand Up @@ -172,12 +169,10 @@ jobs:
- name: Check out the code at a specific ref
uses: actions/checkout@v4
with:
ref: ${{ inputs.ref }}
ref: ${{ inputs.nightly_tag_main || github.ref }}
persist-credentials: true
- name: "Setup Environment"
uses: ./.github/actions/setup-uv
with:
ref: ${{ inputs.nightly_tag_main || github.ref }}

- name: Install the project
run: |
Expand Down Expand Up @@ -288,9 +283,9 @@ jobs:

restart-space:
name: Restart HuggingFace Spaces
if: ${{ inputs.release_type == 'main' && inputs.nightly_build == 'false' }}
if: ${{ inputs.release_type == 'main' && needs.get-version.outputs.nightly-build == 'false' }}
runs-on: ubuntu-latest
needs: build
needs: [build, get-version]
strategy:
matrix:
python-version:
Expand All @@ -302,8 +297,6 @@ jobs:
ref: ${{ inputs.nightly_tag_main || github.ref }}
- name: "Setup Environment"
uses: ./.github/actions/setup-uv
with:
ref: ${{ inputs.nightly_tag_main || github.ref }}

- name: Restart HuggingFace Spaces Build
run: |
Expand Down
2 changes: 0 additions & 2 deletions .github/workflows/integration_tests.yml
Original file line number Diff line number Diff line change
Expand Up @@ -44,8 +44,6 @@ jobs:
ref: ${{ inputs.ref || github.ref }}
- name: "Setup Environment"
uses: ./.github/actions/setup-uv
with:
ref: ${{ inputs.ref || github.ref }}
- name: Run integration tests with api keys
timeout-minutes: 20
run: |
Expand Down
2 changes: 0 additions & 2 deletions .github/workflows/lint-py.yml
Original file line number Diff line number Diff line change
Expand Up @@ -30,8 +30,6 @@ jobs:
persist-credentials: true
- name: "Setup Environment"
uses: ./.github/actions/setup-uv
with:
ref: ${{ inputs.branch || github.ref }}
- name: Install the project
run: uv sync --dev
- name: Run Mypy
Expand Down
6 changes: 0 additions & 6 deletions .github/workflows/nightly_build.yml
Original file line number Diff line number Diff line change
Expand Up @@ -30,8 +30,6 @@ jobs:
persist-credentials: true
- name: "Setup Environment"
uses: ./.github/actions/setup-uv
with:
ref: ${{ github.ref }}
- name: Install the project
run: uv sync --dev

Expand Down Expand Up @@ -76,10 +74,6 @@ jobs:
uv run ./scripts/ci/update_pyproject_name.py langflow-base-nightly base
uv run ./scripts/ci/update_pyproject_version.py $BASE_TAG base

# This updates the dependency of langflow-base to langflow-base-nightly in {project_root}/pyproject.toml
# Note: Still necessary for poetry
uv run ./scripts/ci/update_lf_base_dependency.py $BASE_TAG

# Use the main tag created earlier
MAIN_TAG="${{ steps.generate_main_tag.outputs.main_tag }}"
echo "Updating main project version to $MAIN_TAG"
Expand Down
2 changes: 0 additions & 2 deletions .github/workflows/python_test.yml
Original file line number Diff line number Diff line change
Expand Up @@ -119,8 +119,6 @@ jobs:
ref: ${{ inputs.ref || github.ref }}
- name: "Setup Environment"
uses: ./.github/actions/setup-uv
with:
ref: ${{ inputs.ref || github.ref }}

- name: Check Version
id: check-version
Expand Down
51 changes: 19 additions & 32 deletions .github/workflows/release.yml
Original file line number Diff line number Diff line change
Expand Up @@ -35,8 +35,6 @@ on:
type: boolean
default: true

env:
POETRY_VERSION: "1.8.2"

jobs:
ci:
Expand All @@ -59,15 +57,13 @@ jobs:
- name: Checkout code
uses: actions/checkout@v4
- name: Setup Environment
uses: ./.github/workflows/setup-uv.yml
with:
ref: ${{ github.ref }}
uses: ./.github/actions/setup-uv
- name: Install the project
run: uv sync --dev
- name: Check Version
id: check-version
run: |
version=$(cd src/backend/base && poetry version --short)
version=$(uv tree | grep 'langflow-base' | awk '{print $3}')
last_released_version=$(curl -s "https://pypi.org/pypi/langflow-base/json" | jq -r '.releases | keys | .[]' | sort -V | tail -n 1)
if [ "$version" = "$last_released_version" ]; then
echo "Version $version is already released. Skipping release."
Expand All @@ -79,12 +75,15 @@ jobs:
fi
- name: Build project for distribution
if: steps.check-version.outputs.skipped == 'false'
run: make build base=true
run: make build base=true args="--wheel"
- name: Test CLI
if: steps.check-version.outputs.skipped == 'false'
run: |
python -m pip install src/backend/base/dist/*.whl
python -m langflow run --host 127.0.0.1 --port 7860 &
# TODO: Unsure why the whl is not built in src/backend/base/dist
mkdir src/backend/base/dist
mv dist/*.whl src/backend/base/dist
uv pip install src/backend/base/dist/*.whl
uv run python -m langflow run --host 127.0.0.1 --port 7860 --backend-only &
SERVER_PID=$!
# Wait for the server to start
timeout 120 bash -c 'until curl -f http://127.0.0.1:7860/api/v1/auto_login; do sleep 2; done' || (echo "Server did not start in time" && kill $SERVER_PID && exit 1)
Expand All @@ -100,7 +99,7 @@ jobs:
fi
- name: Publish to PyPI
env:
POETRY_PYPI_TOKEN_PYPI: ${{ secrets.PYPI_API_TOKEN }}
UV_PUBLISH_TOKEN: ${{ secrets.PYPI_API_TOKEN }}
run: |
make publish base=true
- name: Upload Artifact
Expand All @@ -121,9 +120,7 @@ jobs:
- name: Checkout code
uses: actions/checkout@v4
- name: Setup Environment
uses: ./.github/workflows/setup-uv.yml
with:
ref: ${{ github.ref }}
uses: ./.github/actions/setup-uv
- name: Install the project
run: uv sync --dev

Expand Down Expand Up @@ -155,11 +152,11 @@ jobs:
run: sleep 300 # wait for 5 minutes to ensure PyPI propagation

- name: Build project for distribution
run: make build main=true
run: make build main=true args="--no-sources --wheel"
- name: Test CLI
run: |
python -m pip install dist/*.whl
python -m langflow run --host 127.0.0.1 --port 7860 --backend-only &
uv pip install dist/*.whl
uv run python -m langflow run --host 127.0.0.1 --port 7860 --backend-only &
SERVER_PID=$!
# Wait for the server to start
timeout 120 bash -c 'until curl -f http://127.0.0.1:7860/health_check; do sleep 2; done' || (echo "Server did not start in time" && kill $SERVER_PID && exit 1)
Expand Down Expand Up @@ -187,32 +184,22 @@ jobs:
call_docker_build_base:
name: Call Docker Build Workflow for Langflow Base
if: inputs.build_docker_base == true
needs: release-base
uses: ./.github/workflows/docker-build.yml
strategy:
matrix:
release_type:
- base
with:
# version should be needs.release-base.outputs.version if release_type is base
# version should be needs.release-main.outputs.version if release_type is main
version: ""
release_type: ${{ matrix.release_type }}
version: ${{ needs.release-base.outputs.version }}
release_type: base
pre_release: ${{ inputs.pre_release }}
secrets: inherit

call_docker_build_main:
name: Call Docker Build Workflow for Langflow
if: inputs.build_docker_main == true
needs: release-main
uses: ./.github/workflows/docker-build.yml
strategy:
matrix:
release_type:
- main
with:
# version should be needs.release-base.outputs.version if release_type is base
# version should be needs.release-main.outputs.version if release_type is main
version: ""
release_type: ${{ matrix.release_type }}
version: ${{ needs.release-main.outputs.version }}
release_type: main
pre_release: ${{ inputs.pre_release }}
secrets: inherit

Expand Down
9 changes: 3 additions & 6 deletions .github/workflows/release_nightly.yml
Original file line number Diff line number Diff line change
Expand Up @@ -64,8 +64,6 @@ jobs:
persist-credentials: true
- name: "Setup Environment"
uses: ./.github/actions/setup-uv
with:
ref: ${{ inputs.nightly_tag_main }}
- name: Install the project
run: uv sync --dev

Expand All @@ -91,8 +89,7 @@ jobs:

- name: Test CLI
run: |
# TODO: unsure why the whl is not built in src/backend/base
# uv pip install src/backend/base/dist/*.whl
# TODO: Unsure why the whl is not built in src/backend/base/dist
mkdir src/backend/base/dist
mv dist/*.whl src/backend/base/dist/
uv pip install src/backend/base/dist/*.whl
Expand Down Expand Up @@ -141,8 +138,6 @@ jobs:
persist-credentials: true
- name: "Setup Environment"
uses: ./.github/actions/setup-uv
with:
ref: ${{ inputs.nightly_tag_main }}
- name: Install the project
run: uv sync --dev

Expand Down Expand Up @@ -220,3 +215,5 @@ jobs:
release_type: main
nightly_tag_main: ${{ inputs.nightly_tag_main }}
secrets: inherit


2 changes: 0 additions & 2 deletions .github/workflows/style-check-py.yml
Original file line number Diff line number Diff line change
Expand Up @@ -21,8 +21,6 @@ jobs:
uses: actions/checkout@v4
- name: "Setup Environment"
uses: ./.github/actions/setup-uv
with:
ref: ${{ github.ref }}
- name: Register problem matcher
run: echo "::add-matcher::.github/workflows/matchers/ruff.json"
- name: Run Ruff Check
Expand Down
2 changes: 0 additions & 2 deletions .github/workflows/typescript_test.yml
Original file line number Diff line number Diff line change
Expand Up @@ -104,8 +104,6 @@ jobs:

- name: "Setup Environment"
uses: ./.github/actions/setup-uv
with:
ref: ${{ inputs.ref || github.ref }}
- name: Install the project
run: uv sync --dev

Expand Down
2 changes: 1 addition & 1 deletion pyproject.toml
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@ packages = ["src/backend/langflow"]

[project]
name = "langflow"
version = "1.0.19"
version = "1.0.18"
description = "A Python package with a built-in web application"
requires-python = ">=3.10,<3.13"
license = "MIT"
Expand Down
2 changes: 1 addition & 1 deletion src/backend/base/pyproject.toml
Original file line number Diff line number Diff line change
Expand Up @@ -101,7 +101,7 @@ build-backend = "hatchling.build"

[project]
name = "langflow-base"
version = "0.0.97"
version = "0.0.96"
description = "A Python package with a built-in web application"
requires-python = ">=3.10,<3.13"
license = "MIT"
Expand Down
Loading