dotnet-releaser
is an all-in-one command line tool that fully automates the release cycle of your .NET libraries and applications to NuGet and GitHub by building, testing, running coverage, cross-compiling, packaging, creating release notes from PR/commits and publishing.
In practice, dotnet-releaser
will automate the build and publish process of your .NET libraries and applications by wrapping:
dotnet build
with potentially multiple solutionsdotnet test
dotnet pack
for creating NuGet packagesdotnet publish
that can automatically cross-compile to 9+ CPU/OS platforms.
dotnet nuget push
to publish your package to a NuGet registrySystemd
for now for deb
and rpm
packages).By default, dotnet-releaser
will:
Create application packages for any packable application in your project: | Platform | Packages |
---|---|---|
win-x64 , win-arm , win-arm64 |
zip |
|
linux-x64 , linux-arm , linux-arm64 |
deb , tar |
|
rhel-x64 |
rpm , tar |
|
osx-x64 , osx-arm64 |
tar |
1.0.0
, it will try to find a git tag v1.0.0
or 1.0.0
).user_or_org/homebrew-your-app-name
) for all the tar files associated with the targets for Linux and MacOS.Any of these steps can be configured or even entirely disabled easily from a config file. See the user guide on how to setup this differently for your application.
Getting Started
dotnet-releaser
as a global .NET tool.
dotnet tool install --global dotnet-releaser
.sln
file or your project file (.csproj
, .fsproj
, .vbproj
) and run:
dotnet releaser new
dotnet-releaser.toml
at the same level than your solution with a content like:
[msbuild]
project = "Tonlyn.sln"
[github]
user = "xoofx"
repo = "Tomlyn"
dotnet-releaser build --force dotnet-releaser.toml
If you want to integrate it to GitHub Action, use the dotnet-releaser run
command. More details in the doc Adding dotnet-releaser to your CI on GitHub. It is no more complicated than adding the following lines in your GitHub workflow file:
steps:
- name: Checkout
uses: actions/checkout@v3
with:
fetch-depth: 0
- name: Install .NET 7.0
uses: actions/setup-dotnet@v3
with:
dotnet-version: '7.0.x'
- name: Build, Tests, Cover, Pack and Publish (on push tag)
shell: bash
run: |
dotnet tool install --global dotnet-releaser
dotnet-releaser run --nuget-token "${{secrets.NUGET_TOKEN}}" --github-token "${{secrets.GITHUB_TOKEN}}" src/dotnet-releaser.toml
Notice the recommended usage of shell: bash
so that if a secrets token is empty, bash won't remove the quotes, unlike pwsh.
See the user guide below for further details on how to use dotnet-releaser
.
For more details on how to use dotnet-releaser
, please visit the user guide.
This software is released under the BSD-Clause 2 license.
dotnet-releaser
?It's brand new, so it's mainly used by the author for now! :innocent:
You can visit the .github/workflows
folder, or check the release notes of the following projects to see dotnet-releaser
in action:
Applications:
Regular .NET Libraries:
dotnet-releaser
is a wrapper around many amazing OSS libraries:
Alexandre Mutel aka xoofx.