Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Easy release management to nuget #19

Open
wants to merge 6 commits into
base: master
Choose a base branch
from

Conversation

mynkow
Copy link

@mynkow mynkow commented Jun 5, 2018

The purpose of this PR is to make new releases to nuget trivial.

Goals:

  • you control when a new version is released
  • use semver for versioning
  • you should be able to do a release without leaving the dev environment ex: git push can do a release
  • support for prerelease packages

Releasing a patch version:

  1. Find the release notes file and add a new entry which has increased patch version. ex: Hot fix
#### 1.0.2 - 05.06.2018
* Hot fix

#### 1.0.1 - 05.06.2018
* Initial release
  1. git push

The result of these two simple steps is:

Releasing a major or minor version:

  1. Create a branch with the following name: release-2.0.0 or release-1.1.0. Basically you fill the desired semver with a release- prefix.
  2. Do your magic development in that branch. If you want to test this in the wild just create a release notes. The release notes bellow produces two prerelease nuget packages (not at once of course)
#### 2.0.0-beta0002 - 11.06.2018
* Testing breaking changes

#### 2.0.0-beta0001 - 10.06.2018
* Testing new features

#### 1.0.2 - 05.06.2018
* Hot fix

#### 1.0.1 - 05.06.2018
* Initial release
  • the commit which did the release is marked with a tag automatically
  1. When you want to do a stable release you need to do a merge commit and edit the release notes like this:
#### 2.0.0 - 21.06.2018
* Testing breaking changes
* Testing new features

#### 1.0.2 - 05.06.2018
* Hot fix

#### 1.0.1 - 05.06.2018
* Initial release

How it works?

  1. a small script called Nyx is downloaded. It brings Cake + gitversion locally inside the repo. To make everything working you need to follow some simple conventions like:
  • project must be inside a src folder
  • project name and releasenotes.rn.md file name should match
  • git version needs a prefix with the project name to discover tags and to calculate proper versions
  • creating the release branches is a default behavior form gitversion
  1. A Cake task is invoked to build the project
  2. If AppVeyor has a nugetkey in EnvVar AND release notes are edited with next version AND that version is equal to the version calculated by gitversion then Nyx will just push the nuget package

TODO

  • Tests are not executed as part of the build

NOTES:

@mattlorimor if you like this flow we need to do the following

  • figure out nugetpackage name. If it is ProbabilisticDataStructures I will make you an owner
  • I will help you to setup AppVeyor. It takes 5 min with the left hand (if you are right handed)

Software is fun! Happy coding!

@mynkow mynkow changed the title INPROGRESS: Easy release management to nuget Easy release management to nuget Oct 18, 2018
@mattlorimor
Copy link
Owner

mattlorimor commented Dec 6, 2018

@mynkow

I apologize for taking sooooooo incredibly long to even look at this.

It looks pretty good to me. Releasing to nuget is new to me, so help with it is greatly appreciated.

ProbabilisticDataStructures does make the most sense as a name to me. I can perform the necessary steps on AppVeyor once I know what they are.

Again, so sorry about taking so long to get to this!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants