Table of Contents 8 Sections
Overview
Engineering teams often miss critical repository releases, dependency bumps, or hotfix tags. This lightweight microservice captures GitHub `release` events over webhooks, verifies HMAC cryptographic signatures, converts markdown release notes to Slack Block Kit format, and posts formatted notifications to your team channel.
This blueprint is autonomously synthesized and validated against Workflow Vault's Astro Content Collections schema. Review prerequisites and test against sandbox credentials prior to production deployment.
Glossary
- Slack Block Kit
- A visual UI framework provided by Slack to build rich interactive messages with buttons, author images, and formatted sections.
- GitHub Webhook Secret
- A secret token configured in GitHub that signs the request with an X-Hub-Signature-256 header.
Prerequisites
- [You'll need this already] A GitHub repository where you have Admin or Maintainer permissions to configure Webhooks.
- [You'll need this already] A Slack Workspace with an Incoming Webhook URL configured.
- [You'll need this already] Node.js 18+ or Docker installed to host the webhook listener.
Where to Run This Automation
Where should you run this automation?
Don't have 24/7 hardware at home? Choose the setup that fits your budget and technical comfort.
Best for Freelancers, Agencies, and 24/7 Client Pipelines
If you don't have a dedicated server running at home, a Virtual Private Server (VPS) gives you a dedicated Linux server in the cloud that stays online 24/7 even when your personal laptop is closed.
- Cost: ~$4 to $6 / month (predictable flat fee, no per-execution surprises).
- Providers: Hetzner Cloud, DigitalOcean, Linode / Akamai, Railway, or OVH.
- Key advantage: You get a permanent public IP address and free SSL certificates, which are essential for receiving incoming Stripe, Airtable, or GitHub webhooks reliably.
curl -fsSL https://get.docker.com | sh && sudo usermod -aG docker $USER Best for Hobbyists, Testing & Zero-Cost Experimentation
You can run this automation completely free on your everyday computer (Mac, Windows, or Linux) or on low-cost home hardware like a Raspberry Pi 4/5 or repurposed mini PC.
- Cost: $0 / month (100% free).
- Software needed: Docker Desktop (free for personal use) or native Node.js / Python.
- Consideration: Automations will only execute while your computer is powered on and awake. To receive incoming webhooks locally, use tools like
ngrokorCloudflare Tunnelsfor secure local tunneling.
Best for Zero-Maintenance 1-Click Operations
If you don't want to manage Docker containers or terminal commands, you can run automations directly on managed serverless platforms or official SaaS plans:
- Cloudflare Workers: Free tier includes 100,000 requests per day with 0ms cold starts.
- n8n Cloud / Make / Zapier: Fully managed hosted platforms with automated backups and visual scenario builders.
- Railway / Render: 1-click Git container deploys with auto-healing and managed PostgreSQL databases.
Step 1: Create the Webhook Receiver with HMAC Security
Write an Express.js server that extracts the raw body buffer and compares the cryptographic hash.
import express from "express";
import crypto from "crypto";
const app = express();
app.use(express.json({ verify: (req: any, _res, buf) => { req.rawBody = buf; } }));
function verifyGitHubSignature(req: any) {
const secret = process.env.GITHUB_WEBHOOK_SECRET || "";
const signature = req.headers["x-hub-signature-256"] as string;
if (!signature) return false;
const hmac = crypto.createHmac("sha256", secret);
const digest = "sha256=" + hmac.update(req.rawBody).digest("hex");
return crypto.timingSafeEqual(Buffer.from(signature), Buffer.from(digest));
}
app.post("/webhook/github", async (req, res) => {
if (!verifyGitHubSignature(req)) {
return res.status(401).send("Invalid Signature");
}
const event = req.headers["x-github-event"];
if (event === "release" && req.body.action === "published") {
await postToSlack(req.body.release, req.body.repository);
}
return res.status(200).send("OK");
}); Validating the X-Hub-Signature-256 header ensures only genuine GitHub notifications are processed.
Server logs confirm HMAC signature verification.
Workflow architecture
GitHub Release Event -> HMAC SHA-256 Validation -> Markdown Parser -> Slack Webhook Block Kit -> Team Channel Notification
Final result
Instant, formatted release notes delivered to Slack whenever a new release is published.
Troubleshooting
GitHub shows 401 Unauthorized in Webhook Deliveries
The webhook secret in GitHub settings does not match `GITHUB_WEBHOOK_SECRET`.
Double-check the secret string in GitHub Settings -> Webhooks and restart the application.