Files
dify-plugin-sdks/python/examples/github_trigger
Harry 826a6df1a8 feat(trigger): enhance trigger validation and HTTP handling
- Updated `PluginExecutor` to return a result upon validating provider credentials.
- Renamed `ValidateProviderCredentials` to `ValidateTriggerCredentials` for consistency in trigger actions.
- Improved the `PluginRegistration` class to return OAuth schemas for registered providers.
- Added new error classes for better handling of trigger provider credential validation and OAuth errors.
- Refactored HTTP request and response serialization/deserialization for improved clarity and functionality.
- Enhanced GitHub provider to utilize new error handling and validation mechanisms.

This commit improves the overall structure and error management of the trigger system, ensuring better integration and usability.
2025-09-04 16:52:20 +08:00
..

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

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

# 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