sharpshell
sharpshell copied to clipboard
build: support semantic release
I'd like to see if there is something similar to semantic-release for .NET. This would mean:
- All commits follow a standardised convention...
- ...commit messages imply whether a change is major, minor or patch
- ...Git version tags and
SharedAssemblyInfo.cs
should be always in sync and managed via tooling, rather than by hand
Sounds great 👍 I think reading the docs that it's language-independend.
For step 3: It's probably not that hard to include a little script/command that just set's the version number in the file via regex or smth like that. I know that SVN had something like $RevisionNumber: 1.0.0: to use in the file and got updated on each push.
A flow like that?
- Contributer changes code
- Contributer creates pull request for the changes
- CI validates commit messages and rejects invalid ones
- Maintainers review valid PRs and merge into dev-/feature-branch
- Once a month or when needed Maintainers merge dev/feature into master branch
- CI looks at commits and does it things (release notes, etc.) also updates version in SharedAssemblyInfo.cs via script
- CI creates a new Tag/Release for that new version in sync with the set version
- CI creates the NuGet Pkg in sync with the set version
I wonder what can be done with the GitHub Actions.
Yep I think that would be perfect!