Back to Templates
This n8n workflow automates the process of:
All of this is triggered manually via a form, where the user inputs the repository, owner and target branch.
This flow is perfect for:
| Node No | Node Name | Description |
|---|---|---|
| 1 | GitHub Release Input Form | Takes user inputs (owner, repo, branch). |
| 2 | Config | Extracts input and defines PR label grouping config. |
| 3 | Get Latest Git Tag | Fetches latest Git tag (used as reference point). |
| 4 | Get Commit Date of Latest Tag | Gets the exact timestamp of the latest tag's commit. |
| 5 | Fetch All Merged PRs Since Last Tag | Queries GitHub for PRs merged after that timestamp. |
| 6 | Group PRs & Generate Release Notes | Organizes PRs by label and generates markdown notes. |
| 7 | GitHub Pre-release | Creates a draft GitHub release with those notes. |
| 8 | Send Message to Slack | Sends the final release summary to Slack. |
owner: GitHub username/orgrepo: GitHub repository namebranch: Base branch (e.g., main)| Requirement | Description |
|---|---|
| n8n version | Cloud or Self-Hosted |
| GitHub Access | A token with repo and write:repo_hook permissions |
| Slack Access | Webhook URL or Slack OAuth app |
| Git Tags | Semantic versioning tags pushed to the repo |
| Labels | PRs should be labeled (e.g., feature, bug, other) for grouping |
| Feature | How to Customize |
|---|---|
| Label Grouping | Modify the config map in the Config node (step 2). |
| PR Filtering | Adjust the search query in node 5 to fit your repo's conventions. |
| Markdown Template | Tweak markdown generation logic in node 6. |
| Slack Message Format | Customize the Slack text in node 8. |
| Tag Format | Switch from semantic versioning if needed in node 3 logic. |
| Release Type | Change draft: true to false in node 7 for immediate publishing. |
You can extend the flow by:
| Scenario | Description |
|---|---|
| OSS Team Weekly Releases | Automatically publish weekly release notes summarizing merged PRs. |
| Sprint Review Reports | Use it at the end of each sprint to generate change summaries. |
| CI/CD Pipelines | Integrate with GitHub Actions or Jenkins for automated tagging + release. |
| Issue | Possible Cause | Solution |
|---|---|---|
No data found for item-index: "1" |
GitHub Search returned no PRs | Ensure PRs were merged after the last tag and branch name is correct |
Cannot access $node in code |
Wrong script execution context | Ensure JavaScript is selected and variables are accessed properly |
draft must be boolean |
Draft field passed as string | Use true (not "true") in JSON input of HTTP node |
PR labels not grouped |
PRs have no matching labels | Update your label config map or ensure labels exist on PRs |
| Empty Slack message | Slack node not receiving data | Ensure $json.release_notes is being passed correctly |
Need help setting this up for your team or extending it for more features (e.g., JIRA, auto-tagging, changelog export)?
We're here to help you customize, debug and scale this flow.
Feel free to reach out WeblineIndia if you need: