Changelog
We maintain automatically generated changelog pages with user-facing change descriptions for Tenzir Node and Tenzir Platform.
The source for these generated pages is a set of Markdown files located within
the /changelog
directory of this repository.
Directorychangelog
Directorynode
Directorynext
- 0195fc99-14a9-79d0-bc25-9f81d405f096.md
- 0195fc9d-815f-71e2-b372-08811f4834e5.md
Directoryv5.0.0
- 0195fc9d-cb72-7f51-88b9-20adff54aadb.md
Directoryplatform
Directorynext
- 0195fc9d-ebde-7020-b312-72b405c50742.md
Each product (node
, platform
) has subdirectories for each version (e.g.,
v5.0.0
), with next
referring to the currently unreleased version
accumulating changes on the main branch. Within each version directory exists a
set of .md
files representing individual changelog entries.
The basename of every file is a UUID v7. Because the first 48 bit encode a Unix timestamp, the changelog entries are implicitly sorted by time.
Here’s an example of you can generate a UUID v7:
❯ cargo install kodumaro-uuid-cli❯ uuid v7urn:uuid:0195fc9b-a69c-72e3-b91c-4a00ee6f49c6
Changelog Entry Format
Section titled “Changelog Entry Format”Each individual changelog entry must be a Markdown file (.md
) structured with
YAML frontmatter followed by the description of the change.
A changelog has the following structure:
---title: Concise Title of the Change # Requiredtype: feature # Required: 'feature', 'change', or 'bugfix'authors: [github_username] # Required: GitHub username(s) (or use 'author')prs: [1234] # Optional: GitHub PR number(s) (or use 'pr')---
Detailed description of the change using Markdown, focusing on the user impact.Explain what changed, why, and how users might interact with it.
The frontmatter supports these fields:
title
(Required): A concise title describing the change. This will appear as a heading (###
) in the generated changelog page for that version.type
(Required): The category of the change. This determines which section the entry appears under (“Features”, “Changes”, or “Bug Fixes”). Must be one of:feature
: For new functionality.change
: For modifications to existing functionality.bugfix
: For bug fixes.
authors
/author
(Required): The GitHub username(s) of the author(s). Provide a single username as a string or multiple usernames as a YAML list ([user1, user2]
). You can use eitherauthor
orauthors
for a single author, but preferauthors
for lists. Do not use bothauthor
andauthors
in the same file, as this will cause an error. The script generates links like[@username](...)
.prs
/pr
(Optional): The relevant GitHub Pull Request number(s). Provide a single number or multiple numbers as a YAML list ([123, 456]
). You can use eitherpr
orprs
for a single PR number, but preferprs
for lists. Do not use bothpr
andprs
in the same file, as this will cause an error. The script generates links like[#123](...)
for products configured with apr_base_url
(currently enabled fornode
).
Below the closing ---
of the frontmatter, write the description using standard
Markdown.
Adding an Entry Manually
Section titled “Adding an Entry Manually”If you have written a changelog entry file (.md
) according to the format
above, here’s how to add it to the tenzir/docs
repository:
- Clone the Repository: If you haven’t already, clone the
tenzir/docs
repository:Terminal window git clone git@github.com:tenzir/docs.gitcd docs - Navigate to the Correct Directory: Change into the appropriate product and
version subdirectory within the
changelog/
directory. Usenext
for unreleased changes going into the next version.- Example (Upcoming Node feature):
cd changelog/node/next/
- Example (Platform v1.2.0 fix):
cd changelog/platform/v1.2.0/
- Example (Upcoming Node feature):
- Place Your File: Copy or move your new
.md
changelog entry file into this directory. - Commit and Push: Stage the new file, commit it, and push it to the
main
branch (or the relevant branch if targeting a specific release).Terminal window git add <your-changelog-file>.mdgit commit -m "Add changelog entry for <brief description>"git push origin main
Adding an Entry via CI from another Repository
Section titled “Adding an Entry via CI from another Repository”Changelog entries related to changes in other repositories (like
tenzir/tenzir
) can be automatically added to this docs
repository via GitHub
Actions in the source repository.
The CI workflow in the source repository (e.g., tenzir/tenzir
) needs to
perform these general steps:
- Generate Entry: Create the content of the
.md
changelog file (frontmatter + description) based on the change (e.g., from PR metadata). Ensure it follows the Changelog Entry Format. - Checkout
docs
Repo: Useactions/checkout
to check out thetenzir/docs
repository into a separate path. This requires a token or deploy key with write permissions totenzir/docs
, stored as a secret in the source repository. - Create File: Create the new
.md
file within the checked-outdocs
repository structure at the correct path (changelog/<product>/<version>/<filename>.md
). The<version>
should typically benext
. - Commit and Push: Use
git
commands within the workflow to:- Configure the git user (
user.name
,user.email
). - Stage the newly created file (
git add
). - Commit the file (
git commit -m "Add changelog for <feature/fix> from <source-repo> [skip ci]"
). Remember to include[skip ci]
in the commit message to prevent CI loops. - Push the commit to the
main
branch oftenzir/docs
.
- Configure the git user (
For a concrete example of checking out and pushing to the docs
repository
using a secret token, refer to the Documentation
workflow
within the tenzir/tenzir
repository.
Publishing Process
Section titled “Publishing Process”Once a new changelog entry (.md
file) lands on the main
branch of the
tenzir/docs
repository, whether added manually or via CI from another repo, a
GitHub Actions workflow executes the changelog.py
script located in the
/changelog
directory. The script performs the following actions:
- Aggregates all
.md
entries for each product and version. - Generates the corresponding versioned
.mdx
pages within themdx/changelog/
directory (e.g.,mdx/changelog/node/next.mdx
,mdx/changelog/node/v5-0-0.mdx
). The output directory can be configured via the--output-dir
flag (defaulting tomdx
). - Generates or updates the
index.mdx
file within each product’s generated changelog directory (e.g.,mdx/changelog/node/index.mdx
) with sorted links to the version pages. - If the
--sidebar-file
flag is used in the workflow, it generates or updates the specified TypeScript sidebar file (defaulting tosidebar-changelog.ts
). - Commits these generated/updated files back to the
main
branch with a[skip ci]
message.
The deployed documentation site is built using the contents of the repository after these generated files are committed, ensuring the latest changelogs are always published.