public BuildVersion FetchBuildVersion(ITaskContext context) { var content = System.IO.File.ReadAllText("./build/version.props"); XmlDocument doc = new XmlDocument(); doc.LoadXml(content); var versionMajor = doc.DocumentElement.SelectSingleNode("/Project/PropertyGroup/VersionMajor").InnerText; var versionMinor = doc.DocumentElement.SelectSingleNode("/Project/PropertyGroup/VersionMinor").InnerText; var versionPatch = doc.DocumentElement.SelectSingleNode("/Project/PropertyGroup/VersionPatch").InnerText; var versionQuality = doc.DocumentElement.SelectSingleNode("/Project/PropertyGroup/VersionQuality").InnerText; versionQuality = string.IsNullOrWhiteSpace(versionQuality) ? null : versionQuality; var suffix = versionQuality; bool isCi = false; bool isTagged = false; if (!context.BuildSystems().IsLocalBuild) { isCi = true; //// todo use flubu build system when available. var appveyortag = context.GetEnvironmentVariable("APPVEYOR_REPO_TAG"); bool isTagAppveyor = !string.IsNullOrEmpty(appveyortag) && appveyortag.Equals("true", StringComparison.OrdinalIgnoreCase); if ((context.BuildSystems().RunningOn == BuildSystemType.AppVeyor && isTagAppveyor) || (context.BuildSystems().RunningOn == BuildSystemType.TravisCI && string.IsNullOrWhiteSpace(context.BuildSystems().Travis().TagName))) { isTagged = true; } } if (!isTagged) { suffix += (isCi ? "preview-" : "dv-") + CreateStamp(); } suffix = string.IsNullOrWhiteSpace(suffix) ? null : suffix; var version = new BuildVersion(int.Parse(versionMajor), int.Parse(versionMinor), int.Parse(versionPatch), versionQuality); version.Suffix = suffix; return(version); }
protected override void ConfigureTargets(ITaskContext context) { var clean = context.CreateTarget("Clean") .SetDescription("Clean's the solution.") .AddCoreTask(x => x.Clean() .AddDirectoryToClean(OutputDir, true)); var restore = context.CreateTarget("Restore") .SetDescription("Restore's nuget packages in all projects.") .AddCoreTask(x => x.Restore()); //// UpdateNetCoreVersionTask updates NetCoreOpenSource project version. Version is fetched from flubu session. //// Alternatively you can set version in Build task through build task fluent interface. var build = context.CreateTarget("Build") .SetDescription("Build's the solution.") .DependsOn(clean) .DependsOnAsync(restore) .AddCoreTask(x => x.UpdateNetCoreVersionTask("NetCoreOpenSource/NetCoreOpenSource.csproj")) .AddCoreTask(x => x.Build() .Version(BuildVersion.Version.ToString())); var tests = context.CreateTarget("Run.tests") .SetDescription("Run's all test's in the solution") .AddCoreTask(x => x.Test() .Project("NetCoreOpenSource.Tests") .NoBuild()); var pack = context.CreateTarget("Pack") .SetDescription("Prepare's nuget package.") .AddCoreTask(x => x.Pack() .NoBuild() .OutputDirectory(OutputDir)); var branch = context.BuildSystems().Travis().BranchName; //// Examine travis.yaml to see how to pass api key from travis to FlubuCore build script. var nugetPush = context.CreateTarget("Nuget.publish") .SetDescription("Publishes nuget package.") .DependsOn(pack) .AddCoreTask(x => x.NugetPush($"{OutputDir}/NetCoreOpenSource.nupkg") .ServerUrl("https://www.nuget.org/api/v2/package") .ApiKey(NugetApiKey) ) .When((c) => c.BuildSystems().RunningOn == BuildSystemType.TravisCI && !string.IsNullOrEmpty(branch) && branch.EndsWith("stable", StringComparison.OrdinalIgnoreCase)); var rebuild = context.CreateTarget("Rebuild") .SetDescription("Builds the solution and runs all tests.") .SetAsDefault() .DependsOn(build, tests); context.CreateTarget("Rebuild.Server") .SetDescription("Builds the solution, runs all tests and publishes nuget package.") .DependsOn(rebuild, nugetPush); }
public BuildVersion FetchBuildVersion(ITaskContext context) { var content = System.IO.File.ReadAllText(RootDirectory.CombineWith("build/version.props")); XmlDocument doc = new XmlDocument(); doc.LoadXml(content); var versionMajor = doc.DocumentElement.SelectSingleNode("/Project/PropertyGroup/VersionMajor").InnerText; var versionMinor = doc.DocumentElement.SelectSingleNode("/Project/PropertyGroup/VersionMinor").InnerText; var versionPatch = doc.DocumentElement.SelectSingleNode("/Project/PropertyGroup/VersionPatch").InnerText; var versionQuality = doc.DocumentElement.SelectSingleNode("/Project/PropertyGroup/VersionQuality").InnerText; versionQuality = string.IsNullOrWhiteSpace(versionQuality) ? null : versionQuality; var suffix = versionQuality; bool isCi = false; bool isTagged = true; if (!context.BuildSystems().IsLocalBuild) { isCi = true; bool isTagAppveyor = context.BuildSystems().AppVeyor().IsTag; if (context.BuildSystems().RunningOn == BuildSystemType.AppVeyor && isTagAppveyor || context.BuildSystems().RunningOn == BuildSystemType.TravisCI && string.IsNullOrWhiteSpace(context.BuildSystems().Travis().TagName)) { isTagged = true; } } if (!isTagged) { suffix += (isCi ? "preview-" : "dv-") + CreateStamp(); } suffix = string.IsNullOrWhiteSpace(suffix) ? null : suffix; var version = new BuildVersion(int.Parse(versionMajor), int.Parse(versionMinor), int.Parse(versionPatch), versionQuality); version.Suffix = suffix; return(version); }
protected override void ConfigureTargets(ITaskContext context) { var build = context.CreateTarget("Build") .SetDescription("Build's the solution.") .AddCoreTask(x => x.Clean() .CleanOutputDir()) .AddCoreTask(x => x.Restore()) .AddCoreTask(x => x.Build()); var runTests = context.CreateTarget("Run.Tests") .SetDescription("Run's all EasyCaching tests.") .AddTask(X => X.RunProgramTask("docker") .WithArguments("ps", "-a")) .AddCoreTask(x => x.Test().Project(TestDir.CombineWith("EasyCaching.UnitTests/EasyCaching.UnitTests.csproj")) .NoBuild()); var projectsToPack = context.GetFiles(SourceDir, "*/*.csproj"); var nugetPublish = context.CreateTarget("Nuget.Publish") .SetDescription("Packs and publishes nuget package.") .Requires(() => NugetApiKey) .ForEach(projectsToPack, (project, target) => { target .AddCoreTask(x => x.Pack() .Project(project) .IncludeSymbols() .OutputDirectory(OutputDir)); }) .Do(PublishNuGetPackage); var rebuild = context.CreateTarget("Rebuild") .SetAsDefault() .SetDescription("Build's the solution and run's all tests.") .DependsOn(build, runTests); var branch = context.BuildSystems().AppVeyor().BranchName; context.CreateTarget("Rebuild.Server") .SetDescription("Build's the solution, run's all tests and publishes nuget package when running on Appveyor.") .DependsOn(rebuild) .DependsOn(nugetPublish) .When((c) => c.BuildSystems().RunningOn == BuildSystemType.AppVeyor && branch != null && branch.Equals("master", StringComparison.OrdinalIgnoreCase)); }
protected override void ConfigureTargets(ITaskContext context) { var buildVersion = context.CreateTarget("buildVersion") .SetAsHidden() .SetDescription("Fetches flubu version from CHANGELOG.md file.") .AddTask(x => x.FetchBuildVersionFromFileTask() .ProjectVersionFileName("../CHANGELOG.md") .RemovePrefix("## FlubuCore ") .RemovePrefix("## FlubuCore")); var compile = context .CreateTarget("compile") .SetDescription("Compiles the VS solution") .AddCoreTask(x => x.UpdateNetCoreVersionTask("FlubuCore/FlubuCore.csproj", "dotnet-flubu/dotnet-flubu.csproj", "FlubuCore.Tests/FlubuCore.Tests.csproj", "FlubuCore.WebApi.Model/FlubuCore.WebApi.Model.csproj", "FlubuCore.WebApi.Client/FlubuCore.WebApi.Client.csproj", "FlubuCore.WebApi/FlubuCore.WebApi.csproj", "FlubuCore.GlobalTool/FlubuCore.GlobalTool.csproj")) .AddCoreTask(x => x.Build()) .DependsOn(buildVersion); var pack = context.CreateTarget("pack") .SetDescription("Packs flubu components for nuget publishing.") .ForEach(_projectsToPack, (project, target) => { target.AddCoreTask(x => x.Pack() .Project(project) .IncludeSymbols() .OutputDirectory(Output)); }) .DependsOn(buildVersion); var publishWebApi = context.CreateTarget("Publish.WebApi") .SetDescription("Publishes flubu web api for deployment") .AddCoreTask(x => x.Publish("FlubuCore.WebApi").Framework("netcoreapp2.1")) .AddCoreTask(x => x.Publish("FlubuCore.WebApi").Framework("netcoreapp2.0")) .AddCoreTask(x => x.Publish("FlubuCore.WebApi").Framework("netcoreapp3.1")) .AddCoreTask(x => x.Publish("FlubuCore.WebApi").Framework("net462").AddRuntime(Runtime.Win7X64)); var packageWebApi = context.CreateTarget("Package.WebApi") .SetDescription("Packages web api into zip deployment package.") .AddTasks(PackageWebApi); var flubuRunnerMerge = context.CreateTarget("merge") .SetDescription("Merge's all assemblyes into .net flubu console application executable.") .Do(TargetMerge); var flubuTests = context.CreateTarget("test") .SetDescription("Runs all tests in solution.") .AddCoreTask(x => x.Test().Project("FlubuCore.Tests\\FlubuCore.Tests.csproj")) .AddCoreTask(x => x.Test().Project("FlubuCore.WebApi.Tests\\FlubuCore.WebApi.Tests.csproj")) .AddCoreTask(x => x.Test().Project("FlubuCore.Analyzers.Tests\\FlubuCore.Analyzers.Tests.csproj")); var nugetPublish = context.CreateTarget("nuget.publish") .SetDescription("Publishes all FlubuCore nuget packages.") .Do(PublishNuGetPackage). DependsOn(buildVersion); var packageFlubuRunner = context.CreateTarget("package.FlubuRunner") .SetDescription("Packages .net 4.62 FlubuCore runner into zip.") .Do(TargetPackageFlubuRunner); var packageDotnetFlubu = context.CreateTarget("package.DotnetFlubu") .SetDescription("Packages dotnet-flubu tool into zip.") .Do(TargetPackageDotnetFlubu); context.CreateTarget("rebuild") .SetDescription("Rebuilds the solution") .SetAsDefault() .DependsOn(compile, flubuTests); var branch = context.BuildSystems().AppVeyor().BranchName; context.CreateTarget("rebuild.server") .SetDescription("Rebuilds the solution and publishes nuget packages.") .SequentialLogging(true) .DependsOn(compile, flubuTests) .DependsOn(pack, publishWebApi) .DependsOnAsync(flubuRunnerMerge) .DependsOn(packageFlubuRunner) .DependsOn(packageDotnetFlubu) .DependsOn(packageWebApi) .DependsOn(nugetPublish).When((c) => c.BuildSystems().RunningOn == BuildSystemType.AppVeyor && branch != null && branch.Contains("stable", StringComparison.OrdinalIgnoreCase)); ////.DependsOn(packageWebApiWin); var compileLinux = context .CreateTarget("compile.linux") .SetDescription("Compiles the VS solution") .AddCoreTask(x => x.UpdateNetCoreVersionTask("FlubuCore/FlubuCore.csproj", "dotnet-flubu/dotnet-flubu.csproj", "FlubuCore.Tests/FlubuCore.Tests.csproj", "FlubuCore.GlobalTool/FlubuCore.GlobalTool.csproj")) .AddCoreTask(x => x.Restore()) .DependsOn(buildVersion); var flubuTestsLinux = context.CreateTarget("test.linux") .SetDescription("Runs all tests in solution.") .AddCoreTask(x => x.Test().Project("FlubuCore.Tests\\FlubuCore.Tests.csproj").AddFilter("Category!=OnlyWindows")) .AddCoreTask(x => x.Test().Project("FlubuCore.WebApi.Tests\\FlubuCore.WebApi.Tests.csproj")); context.CreateTarget("rebuild.linux") .SetDescription("Rebuilds the solution.") .DependsOn(compileLinux, flubuTestsLinux, packageDotnetFlubu); }
protected override void ConfigureTargets(ITaskContext context) { if (context.ScriptArgs.ContainsKey("version")) { Version = context.ScriptArgs["version"]; } if (context.ScriptArgs.ContainsKey("key")) { NugetKey = context.ScriptArgs["key"]; } context.LogInfo("============================================"); context.LogInfo($"NugetKey:{NugetKey} Version:{Version}"); context.LogInfo("============================================"); var clean = context.CreateTarget("Clean") .SetDescription("Clean's the solution") .AddCoreTask(x => { context.GetFiles(OutputDir, "*.*").Where(c => !c.FileName.Contains(Version)).ToList().ForEach(t => System.IO.File.Delete(t)); return(x.Clean()); }); var restore = context.CreateTarget("Restore") .SetDescription("Restore's the solution") .DependsOn(clean) .AddCoreTask(x => x.Restore()); var build = context.CreateTarget("Build") .SetDescription("Build's the solution") .DependsOn(restore) .AddCoreTask(x => x.Build()); var projectsToPack = context.GetFiles(SourceDir, "*/*.csproj"); projectsToPack.AddRange(context.GetFiles("src/Storage", "*/*.csproj")); projectsToPack.AddRange(context.GetFiles("src/Diagnostics", "*/*.csproj") .Where(x => x.FileName.Contains("HttpReports.Diagnostic.AspNetCore") || x.FileName.Contains("HttpReports.Diagnostic.HttpClient"))); var pack = context.CreateTarget("Pack") .SetDescription("Packs and publishes nuget package.") .DependsOn(build) .ForEach(projectsToPack, (project, target) => { target.AddCoreTask(x => x.Pack().PackageVersion(Version) .Project(project) .NoBuild() .OutputDirectory(OutputDir)); }); var branch = context.BuildSystems().Travis().BranchName; var packs = context.GetFiles(OutputDir, "*.*").Where(x => x.FileName.Contains(Version)); var push = context.CreateTarget("push") .SetDescription("Publishes nuget package.") .DependsOn(pack) .ForEach(packs, (project, tagget) => { tagget.AddCoreTask(x => x.NugetPush($"{OutputDir}/{project.FileName}") .ServerUrl("https://www.nuget.org/api/v2/package").ApiKey(NugetKey)); }); context.CreateTarget("Default") .SetDescription("Runs all targets.") .SetAsDefault() .DependsOn(clean, restore, build, pack, push); }