sharpshell icon indicating copy to clipboard operation
sharpshell copied to clipboard

build: support semantic release

Open dwmkerr opened this issue 5 years ago • 2 comments

I'd like to see if there is something similar to semantic-release for .NET. This would mean:

  1. All commits follow a standardised convention...
  2. ...commit messages imply whether a change is major, minor or patch
  3. ...Git version tags and SharedAssemblyInfo.cs should be always in sync and managed via tooling, rather than by hand

dwmkerr avatar Jun 30 '19 13:06 dwmkerr

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?

  1. Contributer changes code
  2. Contributer creates pull request for the changes
  3. CI validates commit messages and rejects invalid ones
  4. Maintainers review valid PRs and merge into dev-/feature-branch
  5. Once a month or when needed Maintainers merge dev/feature into master branch
  6. CI looks at commits and does it things (release notes, etc.) also updates version in SharedAssemblyInfo.cs via script
  7. CI creates a new Tag/Release for that new version in sync with the set version
  8. CI creates the NuGet Pkg in sync with the set version

I wonder what can be done with the GitHub Actions.

Countryen avatar Jun 30 '19 15:06 Countryen

Yep I think that would be perfect!

dwmkerr avatar Aug 22 '19 09:08 dwmkerr