This document explains the versioning system used in Conduit, how to update versions, and how the version check system works.
Conduit uses Semantic Versioning with the format: MAJOR.MINOR.PATCH
- MAJOR version: Incremented for incompatible API changes
- MINOR version: Incremented for new features in a backward-compatible manner
- PATCH version: Incremented for backward-compatible bug fixes
All version numbers are centrally defined in the Directory.Build.props file in the root of the repository. This ensures that all projects use the same version number.
<Project>
<PropertyGroup>
<Version>1.0.0</Version>
<AssemblyVersion>1.0.0</AssemblyVersion>
<FileVersion>1.0.0</FileVersion>
<InformationalVersion>1.0.0</InformationalVersion>
<!-- Other properties -->
</PropertyGroup>
</Project>When preparing a new release:
- Edit the
Directory.Build.propsfile to increase the version numbers - Commit the change with a message like "Update version to X.Y.Z"
- Create a new GitHub release with the same version
The version in Directory.Build.props flows through to:
- Assembly version information
- Docker image tags
- NuGet packages (if any)
- WebAdmin version display
Conduit includes an automated version checking system that:
- Reads the current version from assembly metadata
- Periodically checks GitHub releases API to see if a newer version is available
- Displays a notification in the WebAdmin when a new version is detected
The version check system can be configured in the application settings:
{
"VersionCheck": {
"Enabled": true,
"IntervalHours": 24
}
}Or via environment variables:
CONDUIT_VERSION_CHECK_ENABLED=true
CONDUIT_VERSION_CHECK_INTERVAL_HOURS=24
Users can manually check for updates on the About page in the WebAdmin, which will show the current version and provide a button to check for updates.
When building Docker images through GitHub Actions:
-
Images are automatically tagged with:
- The semantic version number (when building from a release tag)
- The branch name (e.g.,
master,dev) - The commit SHA
latesttag for the master branch
-
Older versions are retained in the container registry, allowing users to pin to specific versions.
The current version is displayed in several places:
- The About page in the WebAdmin
- Startup logs
- API responses include a version header
- Docker image tags
- Follow Semantic Versioning principles when deciding which version component to increment
- Document changes in the GitHub release notes
- Tag releases in Git with the same version number as in
Directory.Build.props - Update the version before merging to master for a release