docs: Update projects #39
Workflow file for this run
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| # SPDX-FileCopyrightText: 2026 The RISE Project | |
| # SPDX-License-Identifier: MIT | |
| --- | |
| # This workflow is based on | |
| # https://github.com/browser-use/browser-use-terminal/blob/16cdd3ac47261292d88f410abb1f0234577850ce/.github/workflows/browser-use-core-wheels.yml | |
| name: Build browser-use-core wheels (riscv64) | |
| on: | |
| workflow_dispatch: | |
| inputs: | |
| version: | |
| description: 'Version glob to (re)build; empty builds every version of docs/packages/browser-use-core.yaml not released yet' | |
| required: false | |
| default: '' | |
| pull_request: | |
| branches: [main] | |
| paths: | |
| - '.github/workflows/build-browser-use-core.yml' | |
| - 'docs/packages/browser-use-core.yaml' | |
| - 'patches/browser-use-core/**' | |
| push: | |
| branches: [main] | |
| paths: | |
| - '.github/workflows/build-browser-use-core.yml' | |
| - 'docs/packages/browser-use-core.yaml' | |
| - 'patches/browser-use-core/**' | |
| concurrency: | |
| group: ${{ github.workflow }}-${{ github.head_ref || github.run_id }} | |
| cancel-in-progress: true | |
| permissions: | |
| contents: read # to fetch code (actions/checkout) | |
| env: | |
| # Upstream pushed no browser-use-core-v0.13.3 tag; this is the "Bump | |
| # browser-use-core to 0.13.3" commit the PyPI wheels were built from (gotcha 103). | |
| # Move it together with the pending version in docs/packages/browser-use-core.yaml. | |
| BROWSER_USE_CORE_REF: 16cdd3ac47261292d88f410abb1f0234577850ce | |
| jobs: | |
| setup: | |
| uses: $/.github/workflows/_setup.yml | |
| with: | |
| package: browser-use-core | |
| version: ${{ inputs.version }} | |
| build_wheel: | |
| needs: [setup] | |
| if: needs.setup.outputs.versions != '[]' | |
| strategy: | |
| fail-fast: false | |
| matrix: | |
| version: ${{ fromJSON(needs.setup.outputs.versions) }} | |
| name: Build browser-use-core ${{ matrix.version }} manylinux_riscv64 | |
| runs-on: ubuntu-24.04-riscv | |
| timeout-minutes: 360 | |
| env: | |
| BROWSER_USE_CORE_VERSION: ${{ matrix.version }} | |
| UV_PYTHON_PREFERENCE: only-managed | |
| steps: | |
| - name: Checkout browser-use-terminal ${{ env.BROWSER_USE_CORE_REF }} | |
| uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1 | |
| with: | |
| repository: browser-use/browser-use-terminal | |
| ref: ${{ env.BROWSER_USE_CORE_REF }} | |
| persist-credentials: false | |
| - name: Checkout python-wheels | |
| uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1 | |
| with: | |
| path: python-wheels | |
| persist-credentials: false | |
| - name: Apply patches | |
| run: git apply -v python-wheels/patches/browser-use-core/${{ env.BROWSER_USE_CORE_VERSION }}/*.patch | |
| - name: Check package version | |
| run: grep -qx "version = \"${BROWSER_USE_CORE_VERSION}\"" packages/browser-use-core/pyproject.toml | |
| - name: Install Python | |
| uses: astral-sh/setup-uv@20cfd1bf945f4377ade1205e4dbc17946fc9a30d # v10.0.1 | |
| with: | |
| python-version: '3.11' | |
| enable-cache: false | |
| - uses: dtolnay/rust-toolchain@6c977a6ca4077a0ceb28ffbe03f59d46e9ac8772 # master | |
| with: | |
| toolchain: stable | |
| targets: riscv64gc-unknown-linux-musl | |
| - name: Install Linux musl tools | |
| run: sudo apt-get update && sudo apt-get install -y musl-tools | |
| - name: Build wheel | |
| env: | |
| # cc-rs maps upstream's x86_64 musl target to musl-gcc but looks for a | |
| # riscv64-linux-musl-gcc that Ubuntu's musl-tools does not ship. | |
| CC_riscv64gc_unknown_linux_musl: musl-gcc | |
| # Unlike x86_64/aarch64 musl, rustc's riscv64 musl target defaults to | |
| # dynamic linking, which links host glibc's libc.so (no libm symbols). | |
| # -lgcc: without Zbb, gcc lowers ripgrep's jemalloc ffs to __ffsdi2, | |
| # which compiler_builtins does not provide. | |
| CARGO_TARGET_RISCV64GC_UNKNOWN_LINUX_MUSL_RUSTFLAGS: -C target-feature=+crt-static -C link-arg=-lgcc | |
| run: TARGET_TRIPLE=riscv64gc-unknown-linux-musl OUT_DIR=dist scripts/build-browser-use-core-wheel.sh | |
| - uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7.0.1 | |
| with: | |
| name: browser-use-core-${{ env.BROWSER_USE_CORE_VERSION }}-manylinux_riscv64 | |
| path: dist/browser_use_core-*.whl | |
| if-no-files-found: error | |
| test_wheel: | |
| name: Test browser-use-core ${{ matrix.version }} on Python ${{ matrix.python-version }} | |
| needs: [setup, build_wheel] | |
| if: needs.setup.outputs.versions != '[]' | |
| runs-on: ubuntu-24.04-riscv | |
| timeout-minutes: 60 | |
| env: | |
| BROWSER_USE_CORE_VERSION: ${{ matrix.version }} | |
| UV_PYTHON_PREFERENCE: only-managed | |
| UV_EXTRA_INDEX_URL: https://pypi.riseproject.dev/simple/ | |
| UV_INDEX_STRATEGY: unsafe-best-match | |
| strategy: | |
| fail-fast: false | |
| matrix: | |
| version: ${{ fromJSON(needs.setup.outputs.versions) }} | |
| # No 3.14t: the curl-cffi dependency ships only cp310-abi3 wheels, which | |
| # free-threaded CPython cannot load. | |
| python-version: ['3.12', '3.13', '3.14'] | |
| steps: | |
| - name: Checkout browser-use-terminal ${{ env.BROWSER_USE_CORE_REF }} | |
| uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1 | |
| with: | |
| repository: browser-use/browser-use-terminal | |
| ref: ${{ env.BROWSER_USE_CORE_REF }} | |
| path: upstream | |
| sparse-checkout: packages/browser-use-core/tests | |
| persist-credentials: false | |
| - name: Download wheel | |
| uses: actions/download-artifact@3e5f45b2cfb9172054b4087a40e8e0b5a5461e7c # v8.0.1 | |
| with: | |
| name: browser-use-core-${{ env.BROWSER_USE_CORE_VERSION }}-manylinux_riscv64 | |
| path: dist | |
| - name: Install Python | |
| uses: astral-sh/setup-uv@20cfd1bf945f4377ade1205e4dbc17946fc9a30d # v10.0.1 | |
| with: | |
| python-version: ${{ matrix.python-version }} | |
| activate-environment: true | |
| enable-cache: false | |
| - name: Install wheel | |
| run: uv pip install --only-binary ':all:' --find-links dist "browser-use-core==${BROWSER_USE_CORE_VERSION}" pytest | |
| - name: Run package tests | |
| run: | | |
| cp -r upstream/packages/browser-use-core/tests "$RUNNER_TEMP/tests" | |
| cd "$RUNNER_TEMP" | |
| python -m pytest -q tests | |
| - name: Smoke installed wheel | |
| run: | | |
| set -euo pipefail | |
| cd "$RUNNER_TEMP" | |
| browser-use-terminal --version | |
| but --version | |
| python - <<'PY' | |
| import json | |
| import os | |
| import subprocess | |
| import sys | |
| import browser_use_core | |
| binary = browser_use_core.binary_path("browser-use-terminal") | |
| assert os.path.exists(binary), binary | |
| subprocess.run([binary, "--version"], check=True) | |
| subprocess.run([browser_use_core.binary_path("rg"), "--version"], check=True) | |
| proc = subprocess.run( | |
| [binary, "sdk-server", "--transport", "stdio"], | |
| input='{"jsonrpc":"2.0","id":1,"method":"runtime.ping","params":{}}\n', | |
| text=True, | |
| capture_output=True, | |
| timeout=10, | |
| check=True, | |
| ) | |
| response = json.loads(proc.stdout.strip()) | |
| assert response["result"]["ok"] is True, response | |
| env = os.environ.copy() | |
| env["BROWSER_USE_PYTHON"] = sys.executable | |
| proc = subprocess.run( | |
| [binary, "sdk-server", "--transport", "stdio"], | |
| input='{"jsonrpc":"2.0","id":2,"method":"runtime.python_worker_ping","params":{}}\n', | |
| text=True, | |
| capture_output=True, | |
| timeout=20, | |
| check=True, | |
| env=env, | |
| ) | |
| response = json.loads(proc.stdout.strip()) | |
| assert response["result"]["ok"] is True, response | |
| assert "browser-use-python-worker-ok" in response["result"]["text"], response | |
| PY | |
| publish: | |
| name: Publish browser-use-core ${{ matrix.version }} | |
| needs: [setup, build_wheel, test_wheel] | |
| if: needs.setup.outputs.versions != '[]' | |
| strategy: | |
| fail-fast: false | |
| matrix: | |
| version: ${{ fromJSON(needs.setup.outputs.versions) }} | |
| permissions: | |
| contents: write | |
| pull-requests: write | |
| uses: $/.github/workflows/_publish-wheel.yml | |
| secrets: | |
| app-private-key: ${{ secrets.RISEPROJECT_APP_PRIVATE_KEY }} | |
| with: | |
| artifact-pattern: browser-use-core-${{ matrix.version }}-manylinux_riscv64 |