Overview
Automatically creates blog posts when you publish a release on your app repositories. Each blog post includes:
- Release notes
- List of resolved issues (from NPS-Support)
- Installation instructions
Setup
1. Create a Personal Access Token (PAT)
- Go to GitHub Settings → Developer settings → Personal access tokens
- Create token with these scopes:
repo(full control)workflow(update workflows)
- Copy the token
2. Add Secret to App Repositories
For each app repository (Business-Central-Localization, HRM-and-Payroll, etc.):
- Go to repository Settings → Secrets and variables → Actions
- Click "New repository secret"
- Name:
DOCS_REPO_TOKEN - Value: Paste your PAT
- Click "Add secret"
3. Add Workflow to Each App Repository
Copy .github/workflows/EXAMPLE-app-repo-notify-release.yml to each app repo as:
.github/workflows/notify-release.yml
4. Label Issues in NPS-Support
Make sure issues in NPS-Support have the repository name as a label:
Business-Central-Localizationfor localization issuesHRM-and-Payrollfor payroll issuesElectronic-Invoicingfor e-invoicing issues- etc.
How It Works
- You create a release on an app repository (e.g., Business-Central-Localization v1.5.0)
- notify-release.yml workflow (in app repo) triggers and sends data to npsbeograd.github.io
- sync-release-to-blog.yml workflow (in this repo) receives the data:
- Fetches all closed issues from NPS-Support with matching label
- Creates a blog post in
/blog/(root, not updates/) - Includes release notes and resolved issues list
- Blog post is published automatically
Blog Post Structure
Release posts go in /blog/ (root level), not /blog/updates/:
blog/
├── 2025-11-28-release-serbian-localization-v1-5-0.md ← Release posts
├── 2025-11-29-release-hrm-payroll-v2-3-1.md
├── updates/ ← Issue updates
│ ├── 2025-11-20-issue-265-...md
│ └── 2025-11-21-issue-294-...md
└── authors.yml
Manual Trigger
You can also manually trigger a release blog post:
- Go to Actions tab in npsbeograd.github.io
- Select "Sync App Releases to Blog"
- Click "Run workflow"
- Fill in:
- Repository name (e.g.,
Business-Central-Localization) - Release tag (e.g.,
v1.5.0) - Release name (e.g.,
Version 1.5.0 - Tax Updates) - Release body (optional release notes)
- Repository name (e.g.,
Example Blog Post
When you release Serbian Localization v1.5.0, a blog post is created:
---
slug: release-serbian-localization-v1-5-0
title: "Serbian Localization v1.5.0 Released"
authors: [nps_team]
tags: [release, Serbian Localization]
---
# Serbian Localization v1.5.0 - Tax Updates 2025
We're excited to announce the release of **Serbian Localization v1.5.0**!
## Release Notes
Updated tax rates and fiscal printer integration for 2025 regulations.
## Issues Resolved
This release includes fixes for **5 issue(s)**:
- [#265](url) - Payment comparison issue
- [#267](url) - Email sending error
- [#261](url) - Internal calculation
...
## Installation
To install this update, please visit Microsoft AppSource...
Benefits
✅ Automated - No manual blog post writing
✅ Comprehensive - Shows all resolved issues in one place
✅ Professional - Clean format with release notes
✅ Organized - Releases in /blog/, issues in /blog/updates/
✅ RSS feed - Subscribers get notified of new releases
Troubleshooting
Q: Blog post not created after release?
- Check that app repo has
DOCS_REPO_TOKENsecret - Verify notify-release.yml workflow is present in app repo
- Check Actions tab for workflow errors
Q: No issues listed in blog post?
- Ensure NPS-Support issues have the correct repository name label
- Labels are case-insensitive but must match repo name
Q: Want to edit a release blog post?
- Blog posts are in
doc/blog/YYYY-MM-DD-release-*.md - Edit manually and commit