From 62acf6986bbe660bc511ffcb3c3c066d553b3f6e Mon Sep 17 00:00:00 2001 From: Jordan Frazier <122494242+jordanrfrazier@users.noreply.github.com> Date: Mon, 7 Oct 2024 14:41:19 -0700 Subject: [PATCH] ci: fix release workflows for uv (#4053) --- .github/actions/setup-uv/action.yml | 5 --- .github/workflows/docker-build.yml | 13 ++----- .github/workflows/integration_tests.yml | 2 - .github/workflows/lint-py.yml | 2 - .github/workflows/nightly_build.yml | 6 --- .github/workflows/python_test.yml | 2 - .github/workflows/release.yml | 51 +++++++++---------------- .github/workflows/release_nightly.yml | 9 ++--- .github/workflows/style-check-py.yml | 2 - .github/workflows/typescript_test.yml | 2 - 10 files changed, 25 insertions(+), 69 deletions(-) diff --git a/.github/actions/setup-uv/action.yml b/.github/actions/setup-uv/action.yml index 02da155940e0..1b75878f3f83 100644 --- a/.github/actions/setup-uv/action.yml +++ b/.github/actions/setup-uv/action.yml @@ -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" diff --git a/.github/workflows/docker-build.yml b/.github/workflows/docker-build.yml index 2bc6f5632e49..f8a753bdd2ea 100644 --- a/.github/workflows/docker-build.yml +++ b/.github/workflows/docker-build.yml @@ -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 @@ -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: | @@ -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: @@ -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: | diff --git a/.github/workflows/integration_tests.yml b/.github/workflows/integration_tests.yml index c63c5e74ce71..df5480ac3606 100644 --- a/.github/workflows/integration_tests.yml +++ b/.github/workflows/integration_tests.yml @@ -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: | diff --git a/.github/workflows/lint-py.yml b/.github/workflows/lint-py.yml index e14921bb0e49..937de410dd83 100644 --- a/.github/workflows/lint-py.yml +++ b/.github/workflows/lint-py.yml @@ -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 diff --git a/.github/workflows/nightly_build.yml b/.github/workflows/nightly_build.yml index 50e135194f7c..6514b9c047f9 100644 --- a/.github/workflows/nightly_build.yml +++ b/.github/workflows/nightly_build.yml @@ -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 @@ -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" diff --git a/.github/workflows/python_test.yml b/.github/workflows/python_test.yml index fe49e2c784e8..782a4b3c48ff 100644 --- a/.github/workflows/python_test.yml +++ b/.github/workflows/python_test.yml @@ -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 diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index c7f73d826160..afbc0518d571 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -35,8 +35,6 @@ on: type: boolean default: true -env: - POETRY_VERSION: "1.8.2" jobs: ci: @@ -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." @@ -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) @@ -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 @@ -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 @@ -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) @@ -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 diff --git a/.github/workflows/release_nightly.yml b/.github/workflows/release_nightly.yml index b0f8cc7359ee..7f4faee8cdb2 100644 --- a/.github/workflows/release_nightly.yml +++ b/.github/workflows/release_nightly.yml @@ -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 @@ -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 @@ -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 @@ -220,3 +215,5 @@ jobs: release_type: main nightly_tag_main: ${{ inputs.nightly_tag_main }} secrets: inherit + + diff --git a/.github/workflows/style-check-py.yml b/.github/workflows/style-check-py.yml index 8f77c9625493..22cdd869a225 100644 --- a/.github/workflows/style-check-py.yml +++ b/.github/workflows/style-check-py.yml @@ -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 diff --git a/.github/workflows/typescript_test.yml b/.github/workflows/typescript_test.yml index a45d4c68d17f..e970ad1f2b12 100644 --- a/.github/workflows/typescript_test.yml +++ b/.github/workflows/typescript_test.yml @@ -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