feat: support device identity pairing #2430
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
| name: AI Agents (Build & Test) | |
| on: | |
| pull_request: | |
| branches: ["main"] | |
| paths-ignore: | |
| - "core/**" | |
| - "tests/**" | |
| - "tools/**" | |
| - "packages/**" | |
| - "build/**" | |
| - "third_party/**" | |
| - ".devcontainer/**" | |
| - ".github/**" | |
| - "!.github/workflows/ai_agents.yaml" | |
| - ".vscode/**" | |
| - "**.md" | |
| - "ai_agents/docs/**" | |
| - "ai_agents/esp32-client/**" | |
| - "ai_agents/Dockerfile" | |
| - "ai_agents/docker-compose.yml" | |
| - "ai_agents/playground/**" | |
| - "ai_agents/agents/examples/demo/**" | |
| workflow_dispatch: | |
| permissions: | |
| contents: read | |
| security-events: write | |
| concurrency: | |
| group: ai-agents-${{ github.head_ref }} | |
| cancel-in-progress: true | |
| jobs: | |
| call-check-pr-status: | |
| uses: ./.github/workflows/_check_pr_status.yml | |
| ci: | |
| needs: call-check-pr-status | |
| if: ${{ needs.call-check-pr-status.outputs.should_continue == 'true' }} | |
| runs-on: ubuntu-latest | |
| container: | |
| image: ghcr.io/ten-framework/ten_agent_build:0.7.14 | |
| strategy: | |
| matrix: | |
| agent: | |
| [ | |
| agents/examples/voice-assistant, | |
| agents/examples/voice-assistant-realtime, | |
| ] | |
| steps: | |
| - name: Check PR status before matrix execution | |
| uses: actions/github-script@v7 | |
| with: | |
| github-token: ${{ secrets.GITHUB_TOKEN }} | |
| script: | | |
| console.log('Event name:', context.eventName); | |
| console.log('Matrix:', ${{ toJson(matrix) }}); | |
| // Only check for PR events | |
| if (context.eventName !== 'pull_request') { | |
| console.log('Not a PR event, continuing...'); | |
| return; | |
| } | |
| // Ensure we have PR data | |
| if (!context.payload.pull_request) { | |
| console.log('No pull_request data in payload, continuing...'); | |
| return; | |
| } | |
| const { owner, repo } = context.repo; | |
| const prNumber = context.payload.pull_request.number; | |
| try { | |
| const pr = await github.rest.pulls.get({ | |
| owner, | |
| repo, | |
| pull_number: prNumber, | |
| }); | |
| console.log(`PR #${prNumber} state: ${pr.data.state}, merged: ${pr.data.merged}`); | |
| if (pr.data.state === 'closed') { | |
| if (pr.data.merged) { | |
| console.log(`PR #${prNumber} has been merged. Stopping matrix execution.`); | |
| core.setFailed('PR has been merged, stopping execution to save resources.'); | |
| } else { | |
| console.log(`PR #${prNumber} has been closed. Stopping matrix execution.`); | |
| core.setFailed('PR has been closed, stopping execution to save resources.'); | |
| } | |
| } else { | |
| console.log(`PR #${prNumber} is still open. Continuing matrix execution.`); | |
| } | |
| } catch (error) { | |
| console.error(`Error checking PR status: ${error.message}`); | |
| console.log('Error details:', error); | |
| console.log('Continuing matrix execution due to error...'); | |
| } | |
| - uses: actions/checkout@v4 | |
| with: | |
| fetch-depth: "0" | |
| submodules: "true" | |
| - name: Use agent | |
| run: | | |
| git config --global --add safe.directory $(pwd) | |
| cd ai_agents | |
| task use AGENT=${{ matrix.agent }} | |
| - name: Run format check | |
| run: | | |
| cd ai_agents | |
| task check | |
| - name: Run lint | |
| run: | | |
| cd ai_agents | |
| task build-agent-deps | |
| task lint | |
| - name: Run tests | |
| run: | | |
| cd ai_agents | |
| task test -- -s -v |