mirror of
https://github.com/nsnail/Ocelot.git
synced 2025-06-19 21:28:15 +08:00
merged develop and stolen binarymash dont publish unstable build script code
This commit is contained in:
65
build.cake
65
build.cake
@ -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;
|
||||
}
|
Reference in New Issue
Block a user