name: Integration Tests on: push: branches: [main] pull_request: branches: [main] workflow_dispatch: # allow manual runs concurrency: group: ${{ github.workflow }}-${{ github.ref }} cancel-in-progress: true jobs: integration: name: Integration Tests runs-on: ubuntu-latest timeout-minutes: 20 steps: - uses: actions/checkout@v4 - uses: pnpm/action-setup@v4 - uses: actions/setup-node@v4 with: node-version: 20 cache: pnpm # --- Install tmux --- - name: Install tmux run: sudo apt-get update && sudo apt-get install -y tmux # --- Start tmux server --- - name: Start tmux server run: tmux start-server # --- Install agent binaries --- - name: Install Claude Code run: npm install -g @anthropic-ai/claude-code - name: Install Codex run: npm install -g @openai/codex - name: Install Aider run: pip install aider-chat - name: Install OpenCode run: npm install -g opencode-ai # --- Build project --- - run: pnpm install --frozen-lockfile - run: pnpm -r --filter '!@aoagents/ao-web' build # --- Run integration tests --- - name: Run integration tests env: ANTHROPIC_API_KEY: ${{ secrets.ANTHROPIC_API_KEY }} OPENAI_API_KEY: ${{ secrets.OPENAI_API_KEY }} LINEAR_API_KEY: ${{ secrets.LINEAR_API_KEY }} LINEAR_TEAM_ID: ${{ secrets.LINEAR_TEAM_ID }} # Note: COMPOSIO_API_KEY is intentionally not passed here. # When both keys are set, the plugin prefers the Composio transport # which requires @aoagents/core SDK installed. The direct LINEAR_API_KEY # transport needs no extra dependencies. run: pnpm test:integration