name: Live Release E2E "on": workflow_dispatch: inputs: run_telegram_channel: description: "Send one real Telegram smoke message" required: false type: boolean default: false permissions: contents: read concurrency: group: ${{ github.workflow }}-${{ github.ref }} cancel-in-progress: false jobs: live-release-e2e: name: Maintainer live release gates runs-on: ubuntu-latest timeout-minutes: 30 env: PYTHONPATH: ${{ github.workspace }} OPENSQUILLA_TURN_CALL_LOG: "0" OPENROUTER_API_KEY: ${{ secrets.OPENROUTER_API_KEY }} OPENROUTER_BASE_URL: ${{ vars.OPENROUTER_BASE_URL || 'https://openrouter.ai/api/v1' }} LLM_TEST_MODEL: ${{ vars.LLM_TEST_MODEL || 'openai/gpt-4o-mini' }} OPENSQUILLA_LIVE_TELEGRAM_BOT_TOKEN: ${{ secrets.OPENSQUILLA_LIVE_TELEGRAM_BOT_TOKEN }} OPENSQUILLA_LIVE_TELEGRAM_CHAT_ID: ${{ secrets.OPENSQUILLA_LIVE_TELEGRAM_CHAT_ID }} steps: - name: Check out repository uses: actions/checkout@v4 - name: Configure runtime directories shell: bash run: | printf 'OPENSQUILLA_STATE_DIR=%s/opensquilla-state\n' "$RUNNER_TEMP" >> "$GITHUB_ENV" printf 'OPENSQUILLA_LOG_DIR=%s/opensquilla-logs\n' "$RUNNER_TEMP" >> "$GITHUB_ENV" - name: Set up Python uses: actions/setup-python@v5 with: python-version: "3.12" - name: Set up Node uses: actions/setup-node@v4 with: node-version: "22" - name: Set up uv uses: astral-sh/setup-uv@v5 - name: Install dependencies run: uv sync --extra dev --extra recommended --frozen - name: Install Playwright browser run: npx --yes playwright install chromium - name: Fail if OpenRouter secret is missing shell: bash run: | if [ -z "$OPENROUTER_API_KEY" ]; then echo "OPENROUTER_API_KEY GitHub secret is required" exit 1 fi - name: Fail if Telegram secrets are missing when channel smoke is enabled if: ${{ inputs.run_telegram_channel }} shell: bash run: | if [ -z "$OPENSQUILLA_LIVE_TELEGRAM_BOT_TOKEN" ]; then echo "OPENSQUILLA_LIVE_TELEGRAM_BOT_TOKEN GitHub secret is required when Telegram smoke is enabled" exit 1 fi if [ -z "$OPENSQUILLA_LIVE_TELEGRAM_CHAT_ID" ]; then echo "OPENSQUILLA_LIVE_TELEGRAM_CHAT_ID GitHub secret is required when Telegram smoke is enabled" exit 1 fi - name: Run gateway LLM e2e env: OPENSQUILLA_GATEWAY_LLM_E2E: "1" run: uv run pytest tests/functional/test_gateway_llm_e2e.py -q -s - name: Run real-browser chat e2e env: OPENSQUILLA_WEBUI_BROWSER_CHAT_E2E: "1" run: uv run pytest tests/functional/test_webui_browser_chat_e2e.py -q -s - name: Run live Telegram channel smoke if: ${{ inputs.run_telegram_channel }} env: OPENSQUILLA_LIVE_TELEGRAM_E2E: "1" run: uv run pytest tests/functional/test_live_channel_telegram_smoke.py -q -s