diff --git a/.github/workflows/ruff.yml b/.github/workflows/ruff.yml index 396bd25..059625d 100644 --- a/.github/workflows/ruff.yml +++ b/.github/workflows/ruff.yml @@ -9,25 +9,25 @@ on: jobs: ruff-check: runs-on: ubuntu-latest - + steps: - - uses: actions/checkout@v4 - + - uses: actions/checkout@v6 + - name: Install uv uses: astral-sh/setup-uv@v1 with: version: "latest" - + - name: Set up Python uses: actions/setup-python@v4 with: python-version: "3.12" - + - name: Install dependencies run: UV_GIT_LFS=1 uv sync --dev - + - name: Run ruff linter run: uv run ruff check --output-format=github . - + - name: Run ruff formatter - run: uv run ruff format --check --diff . \ No newline at end of file + run: uv run ruff format --check --diff . diff --git a/.github/workflows/tag-version.yml b/.github/workflows/tag-version.yml new file mode 100644 index 0000000..415e032 --- /dev/null +++ b/.github/workflows/tag-version.yml @@ -0,0 +1,77 @@ +name: Tag livekit-agents version + +on: + push: + branches: [main] + paths: + - 'pyproject.toml' + +permissions: + contents: write + +jobs: + tag-version: + runs-on: ubuntu-latest + + steps: + - uses: actions/checkout@v6 + with: + fetch-depth: 2 + fetch-tags: true + + - name: Detect livekit-agents version change + id: version + run: | + set -euo pipefail + + extract_version() { + local ref="$1" + git show "$ref:pyproject.toml" 2>/dev/null \ + | grep -oE '"livekit-agents(\[[^]]*\])?==[^"]+"' \ + | head -n1 \ + | sed -E 's/.*==([^"]+)"/\1/' \ + || true + } + + current=$(extract_version HEAD) + previous=$(extract_version HEAD^ || true) + + echo "current=$current" + echo "previous=$previous" + + if [ -z "$current" ]; then + echo "No livekit-agents==X.Y.Z pin found in pyproject.toml; skipping." + echo "should_tag=false" >> "$GITHUB_OUTPUT" + exit 0 + fi + + if [ "$current" = "$previous" ]; then + echo "livekit-agents version unchanged ($current); skipping." + echo "should_tag=false" >> "$GITHUB_OUTPUT" + exit 0 + fi + + echo "livekit-agents bumped: ${previous:-} -> $current" + echo "should_tag=true" >> "$GITHUB_OUTPUT" + echo "version=$current" >> "$GITHUB_OUTPUT" + + - name: Create and push tag + if: steps.version.outputs.should_tag == 'true' + run: | + set -euo pipefail + tag="v${{ steps.version.outputs.version }}" + + if git rev-parse --verify "refs/tags/$tag" >/dev/null 2>&1; then + existing=$(git rev-list -n1 "$tag") + if [ "$existing" = "$GITHUB_SHA" ]; then + echo "Tag $tag already points at $GITHUB_SHA; nothing to do." + exit 0 + fi + echo "Error: tag $tag already exists on a different commit ($existing)." + exit 1 + fi + + git config user.name "github-actions[bot]" + git config user.email "41898282+github-actions[bot]@users.noreply.github.com" + git tag -a "$tag" -m "livekit-agents $tag" + git push origin "$tag" diff --git a/.github/workflows/template-check.yml b/.github/workflows/template-check.yml index 23157c7..c01f12b 100644 --- a/.github/workflows/template-check.yml +++ b/.github/workflows/template-check.yml @@ -1,6 +1,6 @@ # As this is a starter template project, we don't want to check in the uv.lock and livekit.toml files in its template form # However, once you have cloned this repo for your own use, LiveKit recommends you check them in and delete this github workflow entirely - + name: Template Check on: @@ -12,10 +12,10 @@ on: jobs: check-template-files: runs-on: ubuntu-latest - + steps: - - uses: actions/checkout@v4 - + - uses: actions/checkout@v6 + - name: Check template files not tracked in git run: | if git ls-files | grep -q "^uv\.lock$"; then @@ -28,4 +28,4 @@ jobs: echo "Disable this test and commit the file once you have cloned this repo for your own use" exit 1 fi - echo "✓ uv.lock and livekit.toml are correctly not tracked in git" \ No newline at end of file + echo "✓ uv.lock and livekit.toml are correctly not tracked in git" diff --git a/.github/workflows/tests.yml b/.github/workflows/tests.yml index 5c846e6..25bff93 100644 --- a/.github/workflows/tests.yml +++ b/.github/workflows/tests.yml @@ -9,23 +9,23 @@ on: jobs: test: runs-on: ubuntu-latest - + steps: - - uses: actions/checkout@v4 - + - uses: actions/checkout@v6 + - name: Install uv uses: astral-sh/setup-uv@v1 with: version: "latest" - + - name: Set up Python uses: actions/setup-python@v4 with: - python-version: "3.12" - + python-version: "3.14" + - name: Install dependencies run: UV_GIT_LFS=1 uv sync --dev - + - name: Run tests env: LIVEKIT_URL: ${{ secrets.LIVEKIT_URL }} diff --git a/pyproject.toml b/pyproject.toml index 7bb901c..3f352db 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -9,7 +9,7 @@ description = "Simple voice AI assistant built with LiveKit Agents for Python" requires-python = ">=3.10, <3.15" dependencies = [ - "livekit-agents[silero,turn-detector]~=1.5", + "livekit-agents[silero,turn-detector]==1.5.12", "livekit-plugins-ai-coustics~=0.2", "python-dotenv", ]