A webhook receiver that forwards GitHub webhook events to an emitter API.
- Receives GitHub webhook events
- Extracts important repository information
- Forwards events to a configured emitter API
- Built with Go and Fiber framework
- Containerized deployment with Docker
- Go 1.21 or higher
- Docker (for containerized deployment)
- Git
The application requires the following environment variables:
EMMITER_API_ADDRESS: URL of the emitter API to forward webhook eventsWEBHOOK_SECRET: (Optional) Secret token for webhook authenticationPORT: (Optional, defaults to 8080) Port to listen on
https://smee.io/zt4WZYA7W9d2SXv
- Build the application:
make build- Run locally:
make run EMMITER_API_ADDRESS=https://your-emitter-api.com WEBHOOK_SECRET=your-secret- Build Docker image:
make docker-build- Run Docker container:
make docker-run EMMITER_API_ADDRESS=https://your-emitter-api.com WEBHOOK_SECRET=your-secretRun the test suite:
make testRun linters:
make lintFormat code:
make fmtRemove build artifacts:
make cleanmake all: Build the application (default target)make build: Build the application binarymake run: Run the application locallymake docker-build: Build Docker imagemake docker-run: Run Docker containermake test: Run test suitemake lint: Run lintersmake fmt: Format codemake clean: Clean build artifactsmake deps: Install dependenciesmake update-deps: Update dependenciesmake help: Show available targets
The application is designed to be deployed using Docker. The Docker image is published to GitHub Container Registry (GHCR) with tags matching the git tags.
- Webhook authentication is supported via the
WEBHOOK_SECRETenvironment variable - All network connections use HTTPS
- Docker image is built with security best practices
MIT License
- Fork the repository
- Create your feature branch (
git checkout -b feature/AmazingFeature) - Commit your changes (
git commit -m 'Add some AmazingFeature') - Push to the branch (
git push origin feature/AmazingFeature) - Open a Pull Request
For support, please open an issue on the GitHub repository.