Files
dify-plugin-sdks/python/examples/github_trigger/README.md
T

109 lines
3.4 KiB
Markdown

# GitHub Trigger Plugin
This plugin provides GitHub webhook triggers for Dify workflows, allowing you to automatically respond to GitHub events like code pushes, pull requests, issues, and more.
## Features
- **Push Event Trigger**: Responds to code pushes to GitHub repositories
- **Webhook Signature Verification**: Securely validates GitHub webhook requests
- **OAuth Integration**: Easy authentication with GitHub
- **Rich Event Data**: Extracts detailed information from GitHub events
## Setup
### 1. Install Dependencies
```bash
pip install -r requirements.txt
```
### 2. Configure GitHub OAuth (Optional)
If you want to use OAuth for authentication:
1. Go to your GitHub Settings > Developer settings > OAuth Apps
2. Create a new OAuth App
3. Set the Authorization callback URL to your Dify instance
4. Copy the Client ID and Client Secret
### 3. Generate GitHub Personal Access Token
1. Go to GitHub Settings > Developer settings > Personal access tokens
2. Generate a new token with appropriate repository permissions
3. Copy the token for use in the plugin configuration
### 4. Set Up Webhook
1. Go to your repository Settings > Webhooks
2. Add a new webhook with:
- Payload URL: Your Dify plugin webhook endpoint
- Content type: `application/json`
- Secret: (optional but recommended for security)
- Events: Select the events you want to trigger on (e.g., "Pushes")
## Available Triggers
### Push Trigger
Triggered when someone pushes code to a repository.
**Event Variables:**
- `repository_name`: Name of the repository
- `repository_full_name`: Full name (owner/repo)
- `repository_url`: Repository URL
- `branch`: Branch name that was pushed to
- `ref`: Git reference (e.g., refs/heads/main)
- `pusher_name`: Name of the user who pushed
- `pusher_email`: Email of the user who pushed
- `commits_count`: Number of commits in the push
- `commits`: Array of commit objects with details
- `head_commit`: Information about the head commit
**Parameters:**
- `repository_filter` (optional): Filter by repository name
- `branch_filter` (optional): Filter by branch name
## Usage in Dify
1. Install the plugin in your Dify instance
2. Configure the plugin with your GitHub credentials
3. Create a workflow and add the GitHub trigger
4. Configure the trigger parameters as needed
5. Add your workflow logic to process the GitHub event data
## Example Workflow
```yaml
# Example workflow triggered by GitHub push events
triggers:
- type: github_trigger.push_trigger
parameters:
branch_filter: "main" # Only trigger on main branch pushes
steps:
- name: process_push
type: code
code: |
# Access trigger variables
repo_name = trigger.repository_name
branch = trigger.branch
commits = trigger.commits
# Your processing logic here
print(f"New push to {repo_name} on branch {branch}")
print(f"Number of commits: {len(commits)}")
```
## Security
- Always use webhook secrets to verify request authenticity
- Store credentials securely using Dify's credential management
- Use OAuth when possible for better security
- Regularly rotate access tokens
## Troubleshooting
1. **Webhook not triggering**: Check that the webhook URL is correct and accessible
2. **Authentication errors**: Verify your GitHub token has the required permissions
3. **Signature verification fails**: Ensure the webhook secret matches your configuration