4.0 KiB
Contributing to MaksIT.UScheduler
Thank you for your interest in contributing to MaksIT.UScheduler!
Table of Contents
- Development Setup
- Branch Strategy
- Making Changes
- Commit Message Format
- Versioning
- Build and Test
- Release Process
- Changelog Guidelines
Development Setup
-
Clone the repository:
git clone https://github.com/MaksIT/uscheduler.git cd uscheduler -
Open the solution in Visual Studio or your preferred IDE:
src/MaksIT.UScheduler.slnx -
Build the project:
dotnet build src/MaksIT.UScheduler/MaksIT.UScheduler.csproj
Branch Strategy
main- Production-ready codedev- Active development branch- Feature branches - Created from
devfor specific features
Making Changes
- Create a feature branch from
dev - Make your changes
- Update
CHANGELOG.mdwith your changes - Update version in
.csprojif needed - Run tests locally (
utils/Invoke-TestEngine.bat) - Submit a pull request to
dev
Commit Message Format
(type): description
| Type | Description |
|---|---|
(feature): |
New feature or enhancement |
(bugfix): |
Bug fix |
(refactor): |
Code refactoring without functional changes |
(perf): |
Performance improvement |
(test): |
Add or update tests |
(docs): |
Documentation-only changes |
(build): |
Build system, dependencies, or packaging |
(ci): |
CI/CD or automation changes |
(style): |
Formatting or non-functional style changes |
(revert): |
Revert a previous commit |
(chore): |
General maintenance |
Guidelines: lowercase description, no trailing period.
Versioning
This project follows Semantic Versioning:
- MAJOR - Incompatible API changes
- MINOR - New functionality (backwards compatible)
- PATCH - Bug fixes (backwards compatible)
Version format: X.Y.Z (e.g., 1.0.2)
Before a release, keep versions aligned across:
src/MaksIT.UScheduler/MaksIT.UScheduler.csproj— canonical<Version>src/MaksIT.UScheduler.ScheduleManager/MaksIT.UScheduler.ScheduleManager.csprojCHANGELOG.md— matching version header
Build and Test
Tests and coverage badges
.\utils\Invoke-TestEngine.bat
The test engine runs MaksIT.UScheduler.Tests, applies the quality gate, and refreshes coverage badges in assets/badges/. Commit updated SVG files when coverage changes.
Sync RepoUtils
.\utils\Update-RepoUtils.bat
Release Process
Prerequisites
- .NET SDK
- PowerShell 7+
- Git CLI
- GitHub CLI (
gh) — required for production releases onmain GITHUB_MAKS_IT_COMenvironment variable (seeutils/engines/release/scriptSettings.json)
Development build (dev branch)
No git tag required. Uncommitted changes are allowed.
# 1. Update version in .csproj files and CHANGELOG.md
git checkout dev
# 2. Run the release engine
.\utils\Invoke-ReleasePackage.bat
Output: release/maksit.uscheduler-{version}.zip (local only; GitHub publish is skipped on non-release branches).
Production release (main branch)
# 1. Merge to main and ensure a clean working tree
git checkout main
git merge dev
# 2. Create tag matching the .csproj version
git tag v1.0.2
# 3. Run the release engine
.\utils\Invoke-ReleasePackage.bat
On main, ReleasePublishGuard requires an exact tag on HEAD matching the .NET project version. The engine publishes tests, builds the bundle, creates the ZIP, and pushes a GitHub release when guard requirements are met.
Configuration: utils/engines/release/scriptSettings.json
Changelog Guidelines
Follow Keep a Changelog format:
## [1.0.2] - YYYY-MM-DD
### Added
- New features
### Changed
- Changes to existing functionality
### Fixed
- Bug fixes