4.0 KiB
4.0 KiB
Gitea Webhook Integration Test Samples
The corrected webhook implementation now properly receives and processes webhook notifications FROM Git platforms like Gitea when new releases are published.
Sample Gitea Release Webhook Payload
When a release is published in Gitea, it sends a webhook payload like this:
{
"action": "published",
"release": {
"id": 123,
"tag_name": "v1.2.0",
"target_commitish": "main",
"name": "Version 1.2.0",
"body": "## What's New\n- Added new feature X\n- Fixed bug Y\n- Improved performance\n\n## Breaking Changes\n- None",
"url": "https://git.example.com/user/repo/releases/tag/v1.2.0",
"html_url": "https://git.example.com/user/repo/releases/tag/v1.2.0",
"tarball_url": "https://git.example.com/user/repo/archive/v1.2.0.tar.gz",
"zipball_url": "https://git.example.com/user/repo/archive/v1.2.0.zip",
"draft": false,
"prerelease": false,
"created_at": "2025-01-15T10:30:00Z",
"published_at": "2025-01-15T10:30:00Z",
"author": {
"id": 1,
"login": "developer",
"full_name": "Developer Name"
}
},
"repository": {
"id": 456,
"name": "my-wordpress-plugin",
"full_name": "user/my-wordpress-plugin",
"html_url": "https://git.example.com/user/my-wordpress-plugin",
"clone_url": "https://git.example.com/user/my-wordpress-plugin.git"
},
"sender": {
"id": 1,
"login": "developer"
}
}
How the Webhook Handler Processes This
- Authentication: Validates the passcode in the URL path
- Event Detection: Identifies this as a Gitea release event (
action: "published"
) - Version Extraction: Extracts version "1.2.0" from
tag_name: "v1.2.0"
- Changelog Processing: Uses the release
body
field for changelog - Package Creation: Clones the repository at tag
v1.2.0
and creates distribution package - Database Storage: Stores the new version in
wpdd_software_versions
table - Customer Updates: Customers with valid licenses can now receive the update
Sample GitHub Release Webhook Payload
GitHub uses a similar but slightly different structure:
{
"action": "published",
"release": {
"tag_name": "v1.2.0",
"target_commitish": "main",
"name": "Version 1.2.0",
"body": "Release notes here...",
"draft": false,
"prerelease": false
},
"repository": {
"name": "my-plugin",
"clone_url": "https://github.com/user/my-plugin.git"
}
}
Sample Git Push with Tag Webhook
For platforms that send tag push events instead of release events:
{
"ref": "refs/tags/v1.2.0",
"repository": {
"clone_url": "https://git.example.com/user/repo.git"
},
"commits": [
{
"id": "abc123",
"message": "Release version 1.2.0"
}
],
"head_commit": {
"id": "abc123",
"message": "Release version 1.2.0"
},
"after": "abc123"
}
Webhook URL Format
The webhook URLs generated for each software product follow this format:
https://streamers.channel/wp-json/wpdd/v1/webhook/{product_id}/{passcode}
Example:
https://streamers.channel/wp-json/wpdd/v1/webhook/123/a1b2c3d4e5f6
Where:
123
is the WordPress post ID of the software producta1b2c3d4e5f6
is the randomly generated passcode for security
Testing the Integration
To test this webhook integration:
- Create a software product in WordPress admin
- Set the product type to "Software License"
- Configure the Git repository URL and credentials
- Copy the generated webhook URL from the metabox
- Add the webhook URL to your Gitea repository settings:
- Go to Settings → Webhooks
- Add new webhook with the WPDD URL
- Select "Release events" as the trigger
- Set Content-Type to "application/json"
- Create and publish a new release in Gitea
- Check the
wpdd_webhook_events
table to see the received payload - Check the
wpdd_software_versions
table to see the processed release
This corrected implementation properly receives release notifications FROM Git platforms like Gitea, rather than attempting to push to them.