Nitrozen

← Blog

How to Automate Your Changelog from GitHub Releases

· 4 min read

The hardest part of keeping a changelog isn't writing it; it's remembering to. If your team already publishes GitHub Releases, you have everything you need to keep a public changelog up to date without anyone opening another dashboard.

This guide walks through connecting GitHub Releases to a hosted changelog with the Nitrozen GitHub Action, plus tips for making automated entries read well.

How it works

  1. You publish a release in GitHub (manually, or from your release tooling).
  2. GitHub fires the release event.
  3. A workflow runs the Nitrozen action, which creates a changelog entry from the release's name and body.
  4. The entry appears on your public changelog page and in-app widget.

GitHub documents the release event and its activity types, including published, in Events that trigger workflows.

What you need

Step 1: store your API key as a secret

Never paste API keys into workflow files. In your repository, go to Settings → Secrets and variables → Actions and add a repository secret named NITROZEN_API_KEY. GitHub explains the options in Using secrets in GitHub Actions.

Step 2: add the workflow

Create .github/workflows/changelog.yml:

name: Publish changelog

on:
  release:
    types: [published]

jobs:
  changelog:
    runs-on: ubuntu-latest
    steps:
      - uses: nitrozenio/changelog-action@v1
        with:
          api-key: ${{ secrets.NITROZEN_API_KEY }}
          project-id: '123'

Replace 123 with your project ID. That's the whole integration: the entry's title and content default to the release's name (or tag) and body. The action is a composite action, so there's no build step or dependency install. See the action's documentation for optional inputs, and the source on GitHub.

Step 3: publish a release

Create a release from Releases → Draft a new release, write the notes and click Publish release. Watch the workflow run in the Actions tab, then check your changelog page.

Using published (rather than created) means drafts don't trigger the workflow, so you can prepare notes in a draft and publish when ready.

Make automated entries read well

Automation moves text; it doesn't make it customer-friendly. The release body becomes your public entry, so write it for users:

GitHub's automatically generated release notes list merged pull requests and contributors. They're a good starting draft; you can also configure categories with a .github/release.yml file and exclude labels such as dependencies. Edit the summary at the top before publishing.

For a deeper guide on wording, see how to write a changelog users actually read.

Internal releases you don't want public

Not every release deserves a public entry. Options:

Other ways to automate

GitHub Releases aren't the only trigger. Nitrozen also offers:

Troubleshooting

FAQ

Does this work with semantic-release or release-please? Yes, if those tools publish a GitHub Release, the release event fires and the workflow runs.

Can I edit an entry after it's published? Yes, in the Nitrozen dashboard or through the API.

Set it up in five minutes

Create a free Nitrozen project, add the secret and workflow above, and your next GitHub Release becomes a public changelog entry automatically.

Publish a changelog your users actually see.

Hosted page, in-app widget and API. Free plan available.

Create your free account