#1151: format release notes as JavaScript string for GitHub

This commit is contained in:
Tom Pallister 2020-03-13 08:56:29 +00:00 committed by GitHub
parent 1a280ddd7f
commit 783a77aa6e
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -2,6 +2,7 @@
#addin nuget:?package=Cake.Json #addin nuget:?package=Cake.Json
#addin nuget:?package=Newtonsoft.Json #addin nuget:?package=Newtonsoft.Json
#addin nuget:?package=System.Net.Http #addin nuget:?package=System.Net.Http
#addin nuget:?package=System.Text.Encodings.Web
#tool "nuget:?package=ReportGenerator" #tool "nuget:?package=ReportGenerator"
#tool "nuget:?package=coveralls.net&version=0.7.0" #tool "nuget:?package=coveralls.net&version=0.7.0"
#addin Cake.Coveralls&version=0.10.1 #addin Cake.Coveralls&version=0.10.1
@ -272,7 +273,7 @@ Task("CreateArtifacts")
{ {
System.IO.File.AppendAllLines(artifactsFile, new[]{ System.IO.File.AppendAllLines(artifactsFile, new[]{
projectFile.GetFilename().FullPath, projectFile.GetFilename().FullPath,
"releaseNotes:releasenotes.md" "releasenotes.md"
}); });
} }
@ -326,6 +327,9 @@ Task("DownloadGitHubReleaseArtifacts")
try try
{ {
// hack to let GitHub catch up, todo - refactor to poll
System.Threading.Thread.Sleep(5000);
EnsureDirectoryExists(packagesDir); EnsureDirectoryExists(packagesDir);
var releaseUrl = tagsUrl + versioning.NuGetVersion; var releaseUrl = tagsUrl + versioning.NuGetVersion;
@ -360,7 +364,7 @@ Task("PublishToNuget")
RunTarget(target); RunTarget(target);
/// Gets nuique nuget version for this commit /// Gets unique nuget version for this commit
private GitVersion GetNuGetVersionForCommit() private GitVersion GetNuGetVersionForCommit()
{ {
GitVersion(new GitVersionSettings{ GitVersion(new GitVersionSettings{
@ -418,7 +422,8 @@ private void PublishPackages(ConvertableDirectoryPath packagesDir, ConvertableFi
private void CreateGitHubRelease() private void CreateGitHubRelease()
{ {
var json = $"{{ \"tag_name\": \"{versioning.NuGetVersion}\", \"target_commitish\": \"master\", \"name\": \"{versioning.NuGetVersion}\", \"body\": \"{System.IO.File.ReadAllText(releaseNotesFile)}\", \"draft\": true, \"prerelease\": true }}"; var json = $"{{ \"tag_name\": \"{versioning.NuGetVersion}\", \"target_commitish\": \"master\", \"name\": \"{versioning.NuGetVersion}\", \"body\": \"{ReleaseNotesAsJson()}\", \"draft\": true, \"prerelease\": true }}";
var content = new System.Net.Http.StringContent(json, System.Text.Encoding.UTF8, "application/json"); var content = new System.Net.Http.StringContent(json, System.Text.Encoding.UTF8, "application/json");
using(var client = new System.Net.Http.HttpClient()) using(var client = new System.Net.Http.HttpClient())
@ -442,6 +447,11 @@ private void CreateGitHubRelease()
} }
} }
private string ReleaseNotesAsJson()
{
return System.Text.Encodings.Web.JavaScriptEncoder.Default.Encode(System.IO.File.ReadAllText(releaseNotesFile));
}
private void UploadFileToGitHubRelease(FilePath file) private void UploadFileToGitHubRelease(FilePath file)
{ {
var data = System.IO.File.ReadAllBytes(file.FullPath); var data = System.IO.File.ReadAllBytes(file.FullPath);
@ -468,7 +478,7 @@ private void UploadFileToGitHubRelease(FilePath file)
private void CompleteGitHubRelease() private void CompleteGitHubRelease()
{ {
var json = $"{{ \"tag_name\": \"{versioning.NuGetVersion}\", \"target_commitish\": \"master\", \"name\": \"{versioning.NuGetVersion}\", \"body\": \"{System.IO.File.ReadAllText(releaseNotesFile)}\", \"draft\": false, \"prerelease\": false }}"; var json = $"{{ \"tag_name\": \"{versioning.NuGetVersion}\", \"target_commitish\": \"master\", \"name\": \"{versioning.NuGetVersion}\", \"body\": \"{ReleaseNotesAsJson()}\", \"draft\": false, \"prerelease\": false }}";
var request = new System.Net.Http.HttpRequestMessage(new System.Net.Http.HttpMethod("Patch"), $"https://api.github.com/repos/ThreeMammals/Ocelot/releases/{releaseId}"); var request = new System.Net.Http.HttpRequestMessage(new System.Net.Http.HttpMethod("Patch"), $"https://api.github.com/repos/ThreeMammals/Ocelot/releases/{releaseId}");
request.Content = new System.Net.Http.StringContent(json, System.Text.Encoding.UTF8, "application/json"); request.Content = new System.Net.Http.StringContent(json, System.Text.Encoding.UTF8, "application/json");