merged develop and stolen binarymash dont publish unstable build script code

This commit is contained in:
TomPallister
2017-02-25 18:27:20 +00:00
46 changed files with 2985 additions and 212 deletions

View File

@ -46,9 +46,12 @@ var nugetFeedStableSymbolsUploadUrl = "https://www.nuget.org/api/v2/package";
var releaseTag = "";
string committedVersion = "0.0.0-dev";
var buildVersion = committedVersion;
GitVersion versioning = null;
var nugetFeedUnstableBranchFilter = "^(develop)$|^(PullRequest/)";
var target = Argument("target", "Default");
Information("target is " +target);
Information("Build configuration is " + compileConfig);
@ -76,13 +79,15 @@ Task("Clean")
Task("Version")
.Does(() =>
{
var nugetVersion = GetNuGetVersionForCommit();
versioning = GetNuGetVersionForCommit();
var nugetVersion = versioning.NuGetVersion;
Information("SemVer version number: " + nugetVersion);
if (AppVeyor.IsRunningOnAppVeyor)
{
Information("Persisting version number...");
PersistVersion(nugetVersion);
PersistVersion(committedVersion, nugetVersion);
buildVersion = nugetVersion;
}
else
@ -179,7 +184,7 @@ Task("CreatePackages")
{
EnsureDirectoryExists(packagesDir);
GenerateReleaseNotes();
GenerateReleaseNotes(releaseNotesFile);
var settings = new DotNetCorePackSettings
{
@ -210,7 +215,10 @@ Task("ReleasePackagesToUnstableFeed")
.IsDependentOn("CreatePackages")
.Does(() =>
{
PublishPackages(nugetFeedUnstableKey, nugetFeedUnstableUploadUrl, nugetFeedUnstableSymbolsUploadUrl);
if (ShouldPublishToUnstableFeed(nugetFeedUnstableBranchFilter, versioning.BranchName))
{
PublishPackages(packagesDir, artifactsFile, nugetFeedUnstableKey, nugetFeedUnstableUploadUrl, nugetFeedUnstableSymbolsUploadUrl);
}
});
Task("EnsureStableReleaseRequirements")
@ -262,7 +270,7 @@ Task("ReleasePackagesToStableFeed")
.IsDependentOn("DownloadGitHubReleaseArtifacts")
.Does(() =>
{
PublishPackages(nugetFeedStableKey, nugetFeedStableUploadUrl, nugetFeedStableSymbolsUploadUrl);
PublishPackages(packagesDir, artifactsFile, nugetFeedStableKey, nugetFeedStableUploadUrl, nugetFeedStableSymbolsUploadUrl);
});
Task("Release")
@ -271,21 +279,20 @@ Task("Release")
RunTarget(target);
/// Gets nuique nuget version for this commit
private string GetNuGetVersionForCommit()
private GitVersion GetNuGetVersionForCommit()
{
GitVersion(new GitVersionSettings{
UpdateAssemblyInfo = false,
OutputType = GitVersionOutput.BuildServer
});
var versionInfo = GitVersion(new GitVersionSettings{ OutputType = GitVersionOutput.Json });
return versionInfo.NuGetVersion;
return GitVersion(new GitVersionSettings{ OutputType = GitVersionOutput.Json });
}
/// Updates project version in all of our projects
private void PersistVersion(string version)
private void PersistVersion(string committedVersion, string newVersion)
{
Information(string.Format("We'll search all project.json files for {0} and replace with {1}...", committedVersion, version));
Information(string.Format("We'll search all project.json files for {0} and replace with {1}...", committedVersion, newVersion));
var projectJsonFiles = GetFiles("./**/project.json");
@ -296,24 +303,30 @@ private void PersistVersion(string version)
Information(string.Format("Updating {0}...", file));
var updatedProjectJson = System.IO.File.ReadAllText(file)
.Replace(committedVersion, version);
.Replace(committedVersion, newVersion);
System.IO.File.WriteAllText(file, updatedProjectJson);
}
}
/// generates release notes based on issues closed in GitHub since the last release
private void GenerateReleaseNotes()
private void GenerateReleaseNotes(ConvertableFilePath file)
{
Information("Generating release notes at " + releaseNotesFile);
if (!IsRunningOnWindows())
{
Warning("We can't generate release notes as we're not running on Windows.");
return;
}
Information("Generating release notes at " + file);
var releaseNotesExitCode = StartProcess(
@"tools/GitReleaseNotes/tools/gitreleasenotes.exe",
new ProcessSettings { Arguments = ". /o " + releaseNotesFile });
new ProcessSettings { Arguments = ". /o " + file });
if (string.IsNullOrEmpty(System.IO.File.ReadAllText(releaseNotesFile)))
if (string.IsNullOrEmpty(System.IO.File.ReadAllText(file)))
{
System.IO.File.WriteAllText(releaseNotesFile, "No issues closed since last release");
System.IO.File.WriteAllText(file, "No issues closed since last release");
}
if (releaseNotesExitCode != 0)
@ -323,7 +336,7 @@ private void GenerateReleaseNotes()
}
/// Publishes code and symbols packages to nuget feed, based on contents of artifacts file
private void PublishPackages(string feedApiKey, string codeFeedUrl, string symbolFeedUrl)
private void PublishPackages(ConvertableDirectoryPath packagesDir, ConvertableFilePath artifactsFile, string feedApiKey, string codeFeedUrl, string symbolFeedUrl)
{
var artifacts = System.IO.File
.ReadAllLines(artifactsFile)
@ -332,8 +345,7 @@ private void PublishPackages(string feedApiKey, string codeFeedUrl, string symbo
var codePackage = packagesDir + File(artifacts["nuget"]);
Information("Pushing package");
Information("Pushing package " + codePackage);
NuGetPush(
codePackage,
new NuGetPushSettings {
@ -358,4 +370,19 @@ private string GetResource(string url)
var assetsReader = new StreamReader(assetsStream);
return assetsReader.ReadToEnd();
}
}
private bool ShouldPublishToUnstableFeed(string filter, string branchName)
{
var regex = new System.Text.RegularExpressions.Regex(filter);
var publish = regex.IsMatch(branchName);
if (publish)
{
Information("Branch " + branchName + " will be published to the unstable feed");
}
else
{
Information("Branch " + branchName + " will not be published to the unstable feed");
}
return publish;
}