Skip to content

Add custom prompt configuration for Issue Responder (#22) #6

Add custom prompt configuration for Issue Responder (#22)

Add custom prompt configuration for Issue Responder (#22) #6

Workflow file for this run

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