GitHub Release
This commit is contained in:
Родитель
c503b66f0c
Коммит
60477c0d6e
|
@ -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})
|
|
@ -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
|
||||
|
|
72
build.cake
72
build.cake
|
@ -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.7.0
|
||||
|
||||
//////////////////////////////////////////////////////////////////////
|
||||
|
@ -8,6 +9,8 @@
|
|||
const string SOLUTION_FILE = "vs-project-loader.sln";
|
||||
const string NUGET_ID = "NUnit.Extension.VSProjectLoader";
|
||||
const string CHOCO_ID = "nunit-extension-vs-project-loader";
|
||||
const string GITHUB_OWNER = "nunit";
|
||||
const string GITHUB_REPO = "vs-project-loader";
|
||||
const string DEFAULT_VERSION = "3.9.0";
|
||||
const string DEFAULT_CONFIGURATION = "Release";
|
||||
|
||||
|
@ -22,7 +25,7 @@ var target = Argument("target", "Default");
|
|||
|
||||
// Additional arguments defined in the cake scripts:
|
||||
// --configuration
|
||||
// --version
|
||||
// --packageVersion
|
||||
|
||||
//////////////////////////////////////////////////////////////////////
|
||||
// SETUP AND TEARDOWN
|
||||
|
@ -35,7 +38,7 @@ Setup<BuildParameters>((context) =>
|
|||
if (BuildSystem.IsRunningOnAppVeyor)
|
||||
AppVeyor.UpdateBuildVersion(parameters.PackageVersion + "-" + AppVeyor.Environment.Build.Number);
|
||||
|
||||
Information("Building {0} version {1} of NUnit Project Loader.", parameters.Configuration, parameters.PackageVersion);
|
||||
Information("Building {0} version {1} of Visual Studio Project Loader.", parameters.Configuration, parameters.PackageVersion);
|
||||
|
||||
return parameters;
|
||||
});
|
||||
|
@ -302,6 +305,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 = $"NUnit 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
|
||||
//////////////////////////////////////////////////////////////////////
|
||||
|
|
|
@ -0,0 +1,42 @@
|
|||
////////////////////////////////////////////////////////////////////
|
||||
// TARGETS FOR DEVELOPER USE ON LOCAL MACHINE
|
||||
//////////////////////////////////////////////////////////////////////
|
||||
|
||||
using System;
|
||||
|
||||
// Dependent task for all local targets
|
||||
Task("MustBeLocalBuild")
|
||||
.Does<BuildParameters>((parameters) =>
|
||||
{
|
||||
if (!parameters.IsLocalBuild)
|
||||
throw new Exception($"{parameters.Target} may only be run locally!");
|
||||
});
|
||||
|
||||
Task("CleanAll")
|
||||
.Description("Clean both configs and all obj directories")
|
||||
.IsDependentOn("MustBeLocalBuild")
|
||||
.Does<BuildParameters>((parameters) =>
|
||||
{
|
||||
Information("Cleaning all output directories");
|
||||
CleanDirectory(parameters.ProjectDirectory + "bin/");
|
||||
|
||||
Information("Deleting object directories");
|
||||
DeleteObjectDirectories(parameters);
|
||||
});
|
||||
|
||||
// Download existing draft release for modification or for use in
|
||||
// updating the CHANGES.md file.
|
||||
Task("DownloadDraftRelease")
|
||||
.Description("Download draft release for local use")
|
||||
.IsDependentOn("MustBeLocalBuild")
|
||||
.Does<BuildParameters>((parameters) =>
|
||||
{
|
||||
if (!parameters.IsReleaseBranch)
|
||||
throw new Exception("DownloadDraftRelease requires a release branch!");
|
||||
|
||||
string milestone = parameters.BranchName.Substring(8);
|
||||
|
||||
GitReleaseManagerExport(parameters.GitHubAccessToken, GITHUB_OWNER, GITHUB_REPO, "DraftRelease.md",
|
||||
new GitReleaseManagerExportSettings() { TagName = milestone });
|
||||
});
|
||||
|
|
@ -5,6 +5,7 @@
|
|||
#load "./test-results.cake"
|
||||
#load "./test-reports.cake"
|
||||
#load "./utilities.cake"
|
||||
#load "./local-targets.cake"
|
||||
|
||||
using System;
|
||||
|
||||
|
|
|
@ -23,8 +23,8 @@ public class BuildVersion
|
|||
IsReleaseBranch = BranchName.StartsWith("release-");
|
||||
|
||||
// TODO: Get GitVersion to work on Linux
|
||||
string packageVersion = context.HasArgument("version")
|
||||
? context.Argument("version", DEFAULT_VERSION)
|
||||
string packageVersion = context.HasArgument("packageVersion")
|
||||
? context.Argument("packageVersion", DEFAULT_VERSION)
|
||||
: CalculatePackageVersion();
|
||||
|
||||
int dash = packageVersion.IndexOf('-');
|
||||
|
|
|
@ -11,6 +11,7 @@ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Solution Items", "Solution
|
|||
.travis.yml = .travis.yml
|
||||
appveyor.yml = appveyor.yml
|
||||
build.cake = build.cake
|
||||
GitReleaseManager.yaml = GitReleaseManager.yaml
|
||||
GitVersion.yml = GitVersion.yml
|
||||
vs-project-loader.nuspec = vs-project-loader.nuspec
|
||||
EndProjectSection
|
||||
|
@ -19,6 +20,7 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "vs-project-loader.tests", "
|
|||
EndProject
|
||||
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "cake", "cake", "{414B3A08-96E4-47AF-A365-885A95965B74}"
|
||||
ProjectSection(SolutionItems) = preProject
|
||||
cake\local-targets.cake = cake\local-targets.cake
|
||||
cake\package-checks.cake = cake\package-checks.cake
|
||||
cake\package-tests.cake = cake\package-tests.cake
|
||||
cake\packaging.cake = cake\packaging.cake
|
||||
|
|
Загрузка…
Ссылка в новой задаче