Skip to main content

Release-to-Blog Automation

· 3 min read

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)

  1. Go to GitHub Settings → Developer settings → Personal access tokens
  2. Create token with these scopes:
    • repo (full control)
    • workflow (update workflows)
  3. Copy the token

2. Add Secret to App Repositories

For each app repository (Business-Central-Localization, HRM-and-Payroll, etc.):

  1. Go to repository Settings → Secrets and variables → Actions
  2. Click "New repository secret"
  3. Name: DOCS_REPO_TOKEN
  4. Value: Paste your PAT
  5. 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-Localization for localization issues
  • HRM-and-Payroll for payroll issues
  • Electronic-Invoicing for e-invoicing issues
  • etc.

How It Works

  1. You create a release on an app repository (e.g., Business-Central-Localization v1.5.0)
  2. notify-release.yml workflow (in app repo) triggers and sends data to npsbeograd.github.io
  3. 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
  4. 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:

  1. Go to Actions tab in npsbeograd.github.io
  2. Select "Sync App Releases to Blog"
  3. Click "Run workflow"
  4. 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)

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_TOKEN secret
  • 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