Add custom prompt configuration for Issue Responder (#22) #6
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: Test Issue Responder Action | |
| on: | |
| push: | |
| branches: [main, develop] | |
| paths: | |
| - 'action/**' | |
| - 'sugar/profiles/issue_responder.py' | |
| - 'sugar/integrations/github.py' | |
| - 'action.yml' | |
| - '.github/workflows/test-action.yml' | |
| pull_request: | |
| paths: | |
| - 'action/**' | |
| - 'sugar/profiles/issue_responder.py' | |
| - 'sugar/integrations/github.py' | |
| - 'action.yml' | |
| permissions: | |
| contents: read | |
| jobs: | |
| validate-action: | |
| name: Validate Action Configuration | |
| runs-on: ubuntu-latest | |
| steps: | |
| - name: Checkout repository | |
| uses: actions/checkout@v4 | |
| - name: Validate action.yml syntax | |
| run: | | |
| # Check that action.yml exists at root | |
| if [ ! -f action.yml ]; then | |
| echo "Error: action.yml not found at repository root" | |
| exit 1 | |
| fi | |
| # Validate YAML syntax | |
| python -c "import yaml; yaml.safe_load(open('action.yml'))" | |
| echo "action.yml is valid YAML" | |
| - name: Validate Dockerfile exists | |
| run: | | |
| if [ ! -f action/Dockerfile ]; then | |
| echo "Error: action/Dockerfile not found" | |
| exit 1 | |
| fi | |
| echo "Dockerfile found" | |
| - name: Validate entrypoint exists | |
| run: | | |
| if [ ! -f action/entrypoint.py ]; then | |
| echo "Error: action/entrypoint.py not found" | |
| exit 1 | |
| fi | |
| echo "Entrypoint found" | |
| - name: Check Python dependencies | |
| run: | | |
| if [ ! -f requirements.txt ]; then | |
| echo "Error: requirements.txt not found" | |
| exit 1 | |
| fi | |
| # Check for required dependencies | |
| grep -q "claude-agent-sdk" requirements.txt || (echo "Missing claude-agent-sdk" && exit 1) | |
| grep -q "PyGithub" requirements.txt || (echo "Missing PyGithub" && exit 1) | |
| echo "Dependencies look good" | |
| test-docker-build: | |
| name: Test Docker Build | |
| runs-on: ubuntu-latest | |
| needs: validate-action | |
| steps: | |
| - name: Checkout repository | |
| uses: actions/checkout@v4 | |
| - name: Set up Docker Buildx | |
| uses: docker/setup-buildx-action@v3 | |
| - name: Build Docker image | |
| run: | | |
| cd action | |
| docker build -t sugar-action:test . | |
| - name: Verify image | |
| run: | | |
| docker images | grep sugar-action | |
| test-dry-run: | |
| name: Test Dry Run Mode | |
| runs-on: ubuntu-latest | |
| needs: test-docker-build | |
| if: github.event_name == 'pull_request' | |
| steps: | |
| - name: Checkout repository | |
| uses: actions/checkout@v4 | |
| - name: Create mock issue event | |
| run: | | |
| mkdir -p /tmp/test-event | |
| cat > /tmp/test-event/event.json << 'EOF' | |
| { | |
| "action": "opened", | |
| "issue": { | |
| "number": 999, | |
| "title": "Test Issue", | |
| "body": "This is a test issue for validating the action", | |
| "state": "open", | |
| "user": { | |
| "login": "testuser", | |
| "type": "User" | |
| }, | |
| "labels": [], | |
| "created_at": "2025-01-01T00:00:00Z", | |
| "updated_at": "2025-01-01T00:00:00Z" | |
| }, | |
| "repository": { | |
| "full_name": "roboticforce/sugar" | |
| } | |
| } | |
| EOF | |
| - name: Test action in dry-run mode | |
| id: test-action | |
| continue-on-error: true | |
| uses: ./action | |
| with: | |
| anthropic-api-key: ${{ secrets.ANTHROPIC_API_KEY || 'sk-test-dummy-key-for-validation' }} | |
| github-token: ${{ secrets.GITHUB_TOKEN }} | |
| dry-run: 'true' | |
| confidence-threshold: '0.9' | |
| - name: Check outputs | |
| run: | | |
| echo "Action completed (dry-run mode)" | |
| echo "This validates the action structure is correct" | |
| lint-action-code: | |
| name: Lint Action Code | |
| runs-on: ubuntu-latest | |
| steps: | |
| - name: Checkout repository | |
| uses: actions/checkout@v4 | |
| - name: Set up Python | |
| uses: actions/setup-python@v5 | |
| with: | |
| python-version: '3.11' | |
| - name: Install dependencies | |
| run: | | |
| pip install flake8 black | |
| - name: Lint entrypoint | |
| run: | | |
| flake8 action/entrypoint.py --max-line-length=88 | |
| black --check action/entrypoint.py | |
| - name: Lint profiles | |
| run: | | |
| flake8 sugar/profiles/issue_responder.py --max-line-length=88 | |
| black --check sugar/profiles/issue_responder.py | |
| - name: Lint integrations | |
| run: | | |
| flake8 sugar/integrations/github.py --max-line-length=88 | |
| black --check sugar/integrations/github.py |