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

Create Draft and Final Release on GitHub #49

Merged
merged 2 commits into from
Sep 28, 2021
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
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