Exemplo n.º 1
0
        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);
        }
Exemplo n.º 2
0
        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);
        }
Exemplo n.º 3
0
        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);
        }
Exemplo n.º 4
0
        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));
        }
Exemplo n.º 5
0
    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);
    }
Exemplo n.º 6
0
        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);
        }