Categories We Write About

Create a GitHub release note generator

Here’s a simple GitHub release note generator written in Python. It fetches merged pull requests between two tags (or commits) using the GitHub API and generates release notes based on PR titles, labels, and authors.

python
import requests from datetime import datetime GITHUB_API = "https://api.github.com" def get_merged_prs(repo, token, base_tag, head_tag): headers = {"Authorization": f"token {token}"} url = f"{GITHUB_API}/repos/{repo}/compare/{base_tag}...{head_tag}" response = requests.get(url, headers=headers) response.raise_for_status() commits = response.json().get("commits", []) pr_titles = [] for commit in commits: sha = commit["sha"] commit_details = requests.get(f"{GITHUB_API}/repos/{repo}/commits/{sha}", headers=headers).json() for parent in commit_details.get("parents", []): if "pull" in commit_details.get("commit", {}).get("message", "").lower(): pr_titles.append(commit_details["commit"]["message"].split('n')[0]) return list(set(pr_titles)) def generate_release_notes(repo, token, base_tag, head_tag): pr_titles = get_merged_prs(repo, token, base_tag, head_tag) date_str = datetime.utcnow().strftime("%Y-%m-%d") notes = f"## Release Notes - {date_str}nn" notes += f"Changes between `{base_tag}` and `{head_tag}`:nn" for title in pr_titles: notes += f"- {title}n" return notes # Example usage: # repo = "owner/repo" # token = "your_github_personal_access_token" # base_tag = "v1.0.0" # head_tag = "v1.1.0" # print(generate_release_notes(repo, token, base_tag, head_tag))

Key Features:

  • Fetches merged PRs between two tags.

  • Extracts commit messages related to pull requests.

  • Outputs a clean markdown-formatted release note.

Requirements:

  • Python 3

  • requests module: install with pip install requests

  • A GitHub personal access token with repo access.

Would you like a version that also categorizes PRs by labels (e.g., feature, bug, etc.) or automatically creates a GitHub release using the API?

Share This Page:

Enter your email below to join The Palos Publishing Company Email List

We respect your email privacy

Comments

Leave a Reply

Your email address will not be published. Required fields are marked *

Categories We Write About