Skip to content

Commit

Permalink
Merge pull request #49 from nunit/issue-45
Browse files Browse the repository at this point in the history
Create Draft and Final Release on GitHub
  • Loading branch information
CharliePoole authored Sep 28, 2021
2 parents 227e679 + daef5fc commit e3fb132
Show file tree
Hide file tree
Showing 9 changed files with 457 additions and 99 deletions.
56 changes: 56 additions & 0 deletions GitReleaseManager.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,56 @@
# The labels that will be used to include issues in release notes.
issue-labels-include:
- Feature
- Enhancement
- Bug
- Build
- Documentation
# The labels that will NOT be used when including issues in release notes.
issue-labels-exclude:
- Refactor
# Overrides default pluralization and header names for specific labels.
issue-labels-alias:
- name: Build
header: Build
plural: Build
- name: Documentation
header: Documentation
plural: Documentation
# Configuration values used when creating new releases
create:
include-footer: true
footer-heading: Packages
footer-content: >-
There are two different packages available for the extension.
<ul>
<li>For a chocolatey install: `nunit-extension-nunit-v2-result-writer.{milestone}.nupkg`
<li>For a nuget install: `NUnit.Extension.NUnitV2ResultWriter.{milestone}.nupkg`
</ul>
You may also download the extension from
[chocolatey.org](https://chocolatey.org/packages/nunit-extension-nunit-v2-result-writer/)
or [nuget.org](https://nuget.org/packages/NUnit.Extension.NUnitV2ResultWriter/).
footer-includes-milestone: true
milestone-replace-text: '{milestone}'
include-sha-section: true
sha-section-heading: "SHA256 Hashes of the release artifacts"
sha-section-line-format: "- `{1}\t{0}`"
allow-update-to-published: false
# Configuration values used when exporting release notes
export:
include-created-date-in-title: true
created-date-string-format: MMMM dd, yyyy
perform-regex-removal: false
# regex-text: '### Where to get it(\r\n)*You can .*\.'
# multiline-regex: false
# Configuration values used when closing a milestone
close:
# Whether to add comments to issues closed with the published milestone release.
use-issue-comments: true
issue-comment: |-
:tada: This issue has been resolved in version {milestone} :tada:
The release is available on:
- [GitHub Release](https://github.com/{owner}/{repository}/releases/tag/{milestone})
- [NuGet Package](https://www.nuget.org/packages/NUnit.Extension.NUnitV2ResultWriter/{milestone})
- [Chocolatey Package](https://chocolatey.org/packages/nunit-extension-nunit-v2-result-writer/{milestone})
4 changes: 3 additions & 1 deletion appveyor.yml
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,8 @@ environment:
MYGET_API_KEY:
secure: wtAvJDVl2tfwiVcyLExFHLvZVfUWiQRHsfdHBFCNEATeCHo1Nd8JP642PfY8xhji
NUGET_API_KEY:
secure: 3ojZLs9hiHk/7047hiirFk/qG2RxUACmA8DAUk+8AoILr5R7c4tDGXeTsBjjhq5h
secure: PVHROoT0SmGkr9CHgrKapuA0/CcJGHSP63M3fZaNLvcEVbBnzYLeCwpc0PZHhdvD
CHOCO_API_KEY:
secure: aDsu1U+umVYFVybjkBVtVQsatSj3QKbD7VkGQci9mNF3493g9Giao/GABISIaHjT
GITHUB_ACCESS_TOKEN:
secure: xmGXWrw5Nj3CI3fPxhw/DWIU5YL/1mM06pSmjpkd9LpKs3t3EYXbECbEQs62lU/O
82 changes: 71 additions & 11 deletions build.cake
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
#tool nuget:?package=GitVersion.CommandLine&version=5.0.0
#tool nuget:?package=GitReleaseManager&version=0.11.0
#tool nuget:?package=NUnit.ConsoleRunner&version=3.12.0
#tool nuget:?package=NUnit.ConsoleRunner&version=3.11.1
#tool nuget:?package=NUnit.ConsoleRunner&version=3.10.0
Expand All @@ -10,6 +11,8 @@
const string SOLUTION_FILE = "nunit.v2.driver.sln";
const string NUGET_ID = "NUnit.Extension.NUnitV2Driver";
const string CHOCO_ID = "nunit-extension-nunit-v2-driver";
const string GITHUB_OWNER = "nunit";
const string GITHUB_REPO = "nunit-v2-framework-driver";
const string DEFAULT_VERSION = "3.9.0";
const string DEFAULT_CONFIGURATION = "Release";

Expand Down Expand Up @@ -63,16 +66,6 @@ Task("Clean")
CleanDirectory(parameters.OutputDirectory);
});

Task("CleanAll")
.Does<BuildParameters>((parameters) =>
{
Information("Cleaning all output directories");
CleanDirectory(parameters.ProjectDirectory + "bin/");
Information("Deleting object directories");
DeleteObjectDirectories(parameters);
});

//////////////////////////////////////////////////////////////////////
// INITIALIZE FOR BUILD
//////////////////////////////////////////////////////////////////////
Expand Down Expand Up @@ -313,6 +306,71 @@ Task("PublishToChocolatey")
}
});

//////////////////////////////////////////////////////////////////////
// CREATE A DRAFT RELEASE
//////////////////////////////////////////////////////////////////////

Task("CreateDraftRelease")
.Does<BuildParameters>((parameters) =>
{
if (parameters.IsReleaseBranch)
{
// NOTE: Since this is a release branch, the pre-release label
// is "pre", which we don't want to use for the draft release.
// The branch name contains the full information to be used
// for both the name of the draft release and the milestone,
// i.e. release-2.0.0, release-2.0.0-beta2, etc.
string milestone = parameters.BranchName.Substring(8);
string releaseName = $"Visual Studio Project Loader Extension {milestone}";
Information($"Creating draft release...");
try
{
GitReleaseManagerCreate(parameters.GitHubAccessToken, GITHUB_OWNER, GITHUB_REPO, new GitReleaseManagerCreateSettings()
{
Name = releaseName,
Milestone = milestone
});
}
catch
{
Error($"Unable to create draft release for {releaseName}.");
Error($"Check that there is a {milestone} milestone with at least one closed issue.");
Error("");
throw;
}
}
else
{
Information("Skipping Release creation because this is not a release branch");
}
});

//////////////////////////////////////////////////////////////////////
// CREATE A PRODUCTION RELEASE
//////////////////////////////////////////////////////////////////////

Task("CreateProductionRelease")
.Does<BuildParameters>((parameters) =>
{
if (parameters.IsProductionRelease)
{
string token = parameters.GitHubAccessToken;
string tagName = parameters.PackageVersion;
string assets = $"\"{parameters.NuGetPackage},{parameters.ChocolateyPackage}\"";
Information($"Publishing release {tagName} to GitHub");
GitReleaseManagerAddAssets(token, GITHUB_OWNER, GITHUB_REPO, tagName, assets);
GitReleaseManagerClose(token, GITHUB_OWNER, GITHUB_REPO, tagName);
}
else
{
Information("Skipping CreateProductionRelease because this is not a production release");
}
});

//////////////////////////////////////////////////////////////////////
// TASK TARGETS
//////////////////////////////////////////////////////////////////////
Expand All @@ -336,7 +394,9 @@ Task("Appveyor")
.IsDependentOn("Build")
.IsDependentOn("Test")
.IsDependentOn("Package")
.IsDependentOn("PublishPackages");
.IsDependentOn("PublishPackages")
.IsDependentOn("CreateDraftRelease")
.IsDependentOn("CreateProductionRelease");

Task("Travis")
.IsDependentOn("Build")
Expand Down
Loading

0 comments on commit e3fb132

Please sign in to comment.