Skip to content

Make a release

Olivier Cots edited this page Oct 30, 2025 · 17 revisions

🚀 Make a Release

This page explains how to release a new version of a package within the control-toolbox ecosystem.


1️⃣ Semantic Versioning

See Semantic Versioning.

Version numbers follow the format:

MAJOR.MINOR.PATCH
  • MAJOR: increment for incompatible API changes
  • MINOR: increment for new functionality in a backward-compatible way
  • PATCH: increment for backward-compatible bug fixes

Additional labels for pre-release or build metadata are available.

In Julia, the version is stored in the Project.toml file at the root of the package.


⚡ Creating a release from a previous commit

If you want to release a patch starting from an older release:

  1. Find the commit ID in the Releases page.
  2. Checkout that commit:
git checkout commit_id

You will see a “detached HEAD” warning.

  1. Switch to a new branch:
git switch -c patch_branch
  1. Update the code (including the version in Project.toml), then commit and push.
  2. Trigger registration by commenting:
@JuliaRegistrator register()

It may take a few days for the new version to appear in the registry.


2️⃣ Register in the General Registry and Tag

Assuming your package is in the General registry:

  1. Update the version in Project.toml.
  2. Add a comment in an issue, PR, or commit:
@JuliaRegistrator register()
  • This automatically creates a new tag in GitHub.
  • To enable automatic tagging in workflows, add TagBot.yml to your repository.

3️⃣ Register with LocalRegistry.jl (deprecated)

⚠️ Note: Using a personal registry such as ct-registry is obsolete. Only use this for legacy packages.

If needed:

  1. Go to the main branch with an updated Project.toml:
pkg> activate .
using LocalRegistry
using MyPackage
register()
  1. Create a GitHub release with a tag of the form vx.y.z.

Remarks:

  • The registry can usually be omitted when adding a new version.
  • The version number comes from the version field of Project.toml.

Summary

Step Action
Update version Edit Project.toml
Register in General Registry @JuliaRegistrator register()
Optional legacy registry LocalRegistry.register() (deprecated)
GitHub tag Added automatically via TagBot

📚 References:

Clone this wiki locally