Transform GitHub commits into a format that highlights the actual code changes, allowing users to easily monitor updates in a traditional RSS reader like Feedly or Miniflux.
- Grabs an Atom feed from GitHub (https://github.com/:owner/:repo/commits.atom)
- Parses all commits to obtain the diff
- Generates an RSS feed for each commit, displaying the corresponding diff
Note
A Github PAT is required to avoid rate limiting. Please set the GITHUB_TOKEN variable.
You can easily get started by pulling the latest image from GitHub Container Registry (GHCR):
docker pull chkpwd/diff2rss:latest &&
docker run -d \
--name diff2rss \
-p 8000:8000 \
chkpwd/diff2rss:latest
Once you have the container installed, you're ready to go!
apiVersion: apps/v1kind: Deploymentmetadata:
name: diff2rssspec:
replicas: 1selector:
matchLabels:
app: diff2rsstemplate:
metadata:
labels:
app: diff2rssspec:
containers:
- name: diff2rssimage: ghcr.io/chkpwd/diff2rss:latestports:
- containerPort: 8000
---
apiVersion: v1kind: Servicemetadata:
name: diff2rss-servicespec:
selector:
app: diff2rssports:
- protocol: TCPport: 8000targetPort: 8000type: ClusterIP # This keeps the service internal, the Ingress will expose it externally
---
apiVersion: networking.k8s.io/v1kind: Ingressmetadata:
name: diff2rss-ingressannotations:
nginx.ingress.kubernetes.io/rewrite-target: /spec:
rules:
- host: diff2rss.yourdomain.com # Replace with your desired domain namehttp:
paths:
- path: /pathType: Prefixbackend:
service:
name: diff2rss-serviceport:
number: 8000Open your preferred RSS reader and create a new subscription. The URL should be
in the following format:
https://diff2rss.domain.tld/generate_rss?source=owner/repo
Specifying the branch:
https://diff2rss.domain.tld/generate_rss?source=owner/repo&branch=dev
Specifying an author:
https://diff2rss.domain.tld/generate_rss?source=owner/repo&author=owner
curl -s -X GET https://diff2rss.domain.tld/generate_rss?source=owner/repo&branch=dev&author=renovate
<?xml version="1.0" encoding="UTF-8"?>
<rssversion="2.0"xmlns:dc="http://purl.org/dc/elements/1.1/">
<channel>
<title>GitHub Feed for Recent Commits to iac:main</title>
<link>https://github.com/chkpwd/iac/commits/main</link>
<description>Latest entries from GitHub repository</description>
</channel>
</rss>
... # Removed for brevity