All Workflows / DevOps & CI/CD
DevOps & CI/CD
Beginner 12 min READ

Automated GitHub Release Radar & Changelog Synthesizer for Slack

Intercept GitHub release and tag events, format rich Slack block-kit messages with author avatars and markdown changelogs, and deliver real-time deployment notifications.

Target Architecture

A zero-dependency Express.js microservice running in a small Alpine Docker container. It listens for `release.published` and `release.prereleased` actions, filters out draft releases, and constructs interactive Slack cards.

INTEGRATED RUNTIMES:

Tools used

GitHub Webhooks Node.js Slack Webhooks Express Docker
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.

Before you begin

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.

Hardware & Cloud Guide

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.
Quick 1-liner to install Docker on any Ubuntu/Debian VPS: curl -fsSL https://get.docker.com | sh && sudo usermod -aG docker $USER
RECOMMENDED SPECS
RAM: 1GB – 2GB
vCPU: 1 Core
Storage: 20GB SSD
Uptime: 99.9%

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 ngrok or Cloudflare Tunnels for secure local tunneling.
LOCAL CHECKLIST
Docker Desktop: Installed
RAM Overhead: ~400MB
Webhooks: Tunnel required

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.
SERVERLESS TIERS
Cloudflare: 100k req/day free
GitHub CI: 2,000 min/mo free
Maintenance: Zero OS updates

Step-by-step implementation

Click the numbered phase buttons as you complete each step to track your live progress.

Phase Progress 0/1 completed (0%)
PHASE 1

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.

typescript
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");
});
Why this matters

Validating the X-Hub-Signature-256 header ensures only genuine GitHub notifications are processed.

Expected Output

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.

Recommended Extensions & Scaling

  • Add Discord Webhook fallback integration
  • Attach automatic commit list diff links

Troubleshooting

⚠ GitHub shows 401 Unauthorized in Webhook Deliveries
Root Cause

The webhook secret in GitHub settings does not match `GITHUB_WEBHOOK_SECRET`.

Solution

Double-check the secret string in GitHub Settings -> Webhooks and restart the application.