This project follows Gitflow and uses GitVersion (ContinuousDelivery mode) for automatic semantic versioning. NuGet publishing is handled by GitHub Actions on push to master.
| Branch | Purpose |
|---|---|
master |
Production releases. Pushes here trigger NuGet publish. |
develop |
Integration branch for the next release. |
feature/* |
Feature branches off develop. |
release/* |
Release stabilization branches off develop. |
- All feature branches for the release are merged into
develop. - CI is green on
develop.
git checkout develop
git pull origin develop
git checkout -b release/X.Y.ZOn the release branch, make release-only changes:
- Update target frameworks in
src/Gotenberg.Sharp.Api.Client/Gotenberg.Sharp.Api.Client.csprojif adding/dropping TFMs. - Update
PackageReleaseNotesin the csproj with a summary of the release. - Update
Descriptionin the csproj if the library's capabilities have changed. - Update
CHANGES.MDwith a full release section listing breaking changes, features, bug fixes, and documentation changes. - Update
README.mdwith a release callout and any new/changed usage examples. - Build and run tests locally:
dotnet build
dotnet testgit checkout master
git pull origin master
git merge --no-ff release/X.Y.Z
git tag X.Y.Z
git push origin master --tagsThis push triggers the GitHub Actions workflow which will:
- Build and test against a Gotenberg docker container with basic auth.
- Calculate the package version via GitVersion.
- Pack the NuGet package (with symbols).
- Publish to nuget.org.
git checkout develop
git pull origin develop
git merge --no-ff release/X.Y.Z
git push origin developgit branch -d release/X.Y.Z
git push origin --delete release/X.Y.Z- Go to Releases > Draft a new release.
- Choose the
X.Y.Ztag. - Title:
vX.Y.Z - Body: Copy the corresponding section from
CHANGES.MD. - Publish.
For critical fixes to a released version:
git checkout master
git checkout -b hotfix/X.Y.Z+1
# make fix, commit
git checkout master
git merge --no-ff hotfix/X.Y.Z+1
git tag X.Y.Z+1
git push origin master --tags
git checkout develop
git merge --no-ff hotfix/X.Y.Z+1
git push origin develop
git branch -d hotfix/X.Y.Z+1- Workflow:
.github/workflows/deploy.yml - Triggers: All pushes and pull requests (build + test). NuGet publish only on push to
master. - Versioning: GitVersion with
ContinuousDeliverymode (GitVersion.yml). - NuGet API key: Stored as
NUGETKEYrepository secret. - Test infrastructure: Gotenberg v8 docker container with basic auth (
testuser/testpass).