# .gitea/workflows/ai-solve-issue.yml name: AI Issue Solver on: # Ручной запуск workflow_dispatch: inputs: issue_number: description: 'Issue number to solve' required: true type: number # Автоматический запуск по метке issues: types: [labeled] jobs: solve: # Запускать при ручном триггере ИЛИ при добавлении метки ai-solve if: | (gitea.event_name == 'workflow_dispatch') || (gitea.event_name == 'issues' && contains(gitea.event.labels.*.name, 'ai-solve')) runs-on: opencode steps: - name: Debug environment run: | echo "=== Debug Info ===" echo "Gitea context:" echo "event_name: ${{ gitea.event_name }}" echo "repository: ${{ gitea.repository }}" echo "repository_owner: ${{ gitea.repository_owner }}" echo "event.issue: ${{ toJSON(gitea.event.issue) }}" echo "event.inputs: ${{ toJSON(gitea.event.inputs) }}" echo "event.labels: ${{ toJSON(gitea.event.labels) }}" echo "=== End Debug ===" - name: Setup issue data id: setup run: | echo "Determining issue number based on event type..." if [[ "${{ gitea.event_name }}" == "workflow_dispatch" ]]; then # Ручной запуск - берем из inputs ISSUE_NUMBER="${{ gitea.event.inputs.issue_number }}" echo "Manual run - Issue number: $ISSUE_NUMBER" elif [[ "${{ gitea.event_name }}" == "issues" ]]; then # Автоматический запуск - берем из события issue ISSUE_NUMBER="${{ gitea.event.issue.number }}" echo "Auto run - Issue number: $ISSUE_NUMBER" else echo "Unknown event type: ${{ gitea.event_name }}" exit 1 fi echo "issue_number=$ISSUE_NUMBER" >> $GITHUB_OUTPUT echo "event_type=${{ gitea.event_name }}" >> $GITHUB_OUTPUT - name: Checkout repository uses: actions/checkout@v4 with: token: ${{ secrets.GGITEA_TOKEN }} - name: Solve Issue env: GGITEA_URL: ${{ secrets.GGITEA_URL }} GGITEA_TOKEN: ${{ secrets.GGITEA_TOKEN }} REPO_OWNER: ${{ gitea.repository_owner }} REPO_NAME: ${{ gitea.repository }} ISSUE_NUMBER: ${{ steps.setup.outputs.issue_number }} EVENT_TYPE: ${{ steps.setup.outputs.event_type }} run: | echo "=== Starting AI Issue Solver ===" echo "Event type: $EVENT_TYPE" echo "Repository: $REPO_OWNER/$REPO_NAME" echo "Issue number: $ISSUE_NUMBER" # Проверяем наличие команды solve-issue if ! command -v solve-issue >/dev/null 2>&1; then echo "❌ ERROR: solve-issue command not found in PATH!" echo "Current PATH: $PATH" echo "Trying to find solve-issue..." find / -name "solve-issue" -type f 2>/dev/null | head -5 exit 1 fi echo "✅ solve-issue found at: $(which solve-issue)" echo "📋 Command info:" solve-issue --help || echo "No help available" echo "🚀 Executing solve-issue..." # Запускаем с таймаутом на случай зависания timeout 600 solve-issue EXIT_CODE=$? if [ $EXIT_CODE -eq 0 ]; then echo "✅ solve-issue completed successfully" elif [ $EXIT_CODE -eq 124 ]; then echo "⏰ solve-issue timed out after 10 minutes" exit 1 else echo "❌ solve-issue failed with exit code: $EXIT_CODE" exit $EXIT_CODE fi echo "=== AI Issue Solver finished ==="