diff --git a/abp-build-config.json b/abp-build-config.json new file mode 100644 index 0000000000..9fa6025f07 --- /dev/null +++ b/abp-build-config.json @@ -0,0 +1,4 @@ +{ + "Name": "abp", + "RootPath": "D:\\GitHub\\abp" +} \ No newline at end of file diff --git a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/Build/DefaultBuildStatusGenerator.cs b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/Build/DefaultBuildStatusGenerator.cs index d1ad0f0094..8b84ddd271 100644 --- a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/Build/DefaultBuildStatusGenerator.cs +++ b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/Build/DefaultBuildStatusGenerator.cs @@ -37,7 +37,7 @@ namespace Volo.Abp.Cli.Build p.RepositoryName == buildConfig.GitRepository.Name && buildSucceededProjects.Contains(p.CsProjPath) ) - .Select(e => new DotNetProjectBuildStatus() + .Select(e => new DotNetProjectBuildStatus { CsProjPath = e.CsProjPath, CommitId = lastCommitId diff --git a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/Build/DefaultDotNetProjectBuilder.cs b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/Build/DefaultDotNetProjectBuilder.cs index a5473d1e14..790721c82c 100644 --- a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/Build/DefaultDotNetProjectBuilder.cs +++ b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/Build/DefaultDotNetProjectBuilder.cs @@ -29,8 +29,7 @@ namespace Volo.Abp.Cli.Build { continue; } - - // TODO: use parallel foreach here. + foreach (var projectDependency in project.Dependencies) { if (builtProjects.Contains(project.CsProjPath)) diff --git a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/Build/GitRepositoryBuildStatus.cs b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/Build/GitRepositoryBuildStatus.cs index 9f7e161246..2c7ea6d11e 100644 --- a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/Build/GitRepositoryBuildStatus.cs +++ b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/Build/GitRepositoryBuildStatus.cs @@ -85,6 +85,11 @@ namespace Volo.Abp.Cli.Build public void MergeWith(GitRepositoryBuildStatus newBuildStatus) { + if (!newBuildStatus.CommitId.IsNullOrEmpty()) + { + CommitId = newBuildStatus.CommitId; + } + foreach (var succeedProject in newBuildStatus.SucceedProjects) { AddOrUpdateProjectStatus(succeedProject); diff --git a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/Commands/BuildCommand.cs b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/Commands/BuildCommand.cs index cc1b0d5ba9..2df96cf1df 100644 --- a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/Commands/BuildCommand.cs +++ b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/Commands/BuildCommand.cs @@ -27,7 +27,7 @@ namespace Volo.Abp.Cli.Commands public IBuildStatusGenerator BuildStatusGenerator { get; set; } public IBuildProjectListSorter BuildProjectListSorter { get; set; } - + public Task ExecuteAsync(CommandLineArgs commandLineArgs) { var sw = new Stopwatch(); @@ -73,13 +73,13 @@ namespace Volo.Abp.Cli.Commands string.IsNullOrEmpty(maxParallelBuild) ? 1 : Convert.ToInt32(maxParallelBuild), dotnetBuildArguments ?? "" ); - + var buildStatus = BuildStatusGenerator.Generate( buildConfig, changedProjectFiles, buildSucceededProjects ); - + RepositoryBuildStatusStore.Set(buildName, buildConfig.GitRepository, buildStatus); sw.Stop(); @@ -87,7 +87,7 @@ namespace Volo.Abp.Cli.Commands return Task.CompletedTask; } - + public string GetUsageInfo() { var sb = new StringBuilder(); diff --git a/framework/test/Volo.Abp.Cli.Core.Tests/Volo/Abp/Cli/Build/BuildStatusGenerator_Tests.cs b/framework/test/Volo.Abp.Cli.Core.Tests/Volo/Abp/Cli/Build/BuildStatusGenerator_Tests.cs index 15cf27afbf..af8ee5020d 100644 --- a/framework/test/Volo.Abp.Cli.Core.Tests/Volo/Abp/Cli/Build/BuildStatusGenerator_Tests.cs +++ b/framework/test/Volo.Abp.Cli.Core.Tests/Volo/Abp/Cli/Build/BuildStatusGenerator_Tests.cs @@ -54,6 +54,7 @@ namespace Volo.Abp.Cli.Build status.CommitId.ShouldBe(lastCommitId); } + [Fact] public void Should_Set_Repository_CommitId_When_All_Projects_Built_For_Child_Repository() { diff --git a/framework/test/Volo.Abp.Cli.Core.Tests/Volo/Abp/Cli/Build/GitRepositoryBuildStatus_Tests.cs b/framework/test/Volo.Abp.Cli.Core.Tests/Volo/Abp/Cli/Build/GitRepositoryBuildStatus_Tests.cs index 4797ab54d9..070c32e819 100644 --- a/framework/test/Volo.Abp.Cli.Core.Tests/Volo/Abp/Cli/Build/GitRepositoryBuildStatus_Tests.cs +++ b/framework/test/Volo.Abp.Cli.Core.Tests/Volo/Abp/Cli/Build/GitRepositoryBuildStatus_Tests.cs @@ -1,5 +1,7 @@ using System.Collections.Generic; using System.Linq; +using Microsoft.Extensions.DependencyInjection; +using NSubstitute; using Shouldly; using Xunit; @@ -7,6 +9,14 @@ namespace Volo.Abp.Cli.Build { public class GitRepositoryBuildStatus_Tests : AbpCliTestBase { + private IGitRepositoryHelper _gitRepositoryHelper; + + protected override void AfterAddApplication(IServiceCollection services) + { + _gitRepositoryHelper = Substitute.For(); + services.AddTransient(provider => _gitRepositoryHelper); + } + [Fact] public void Add_New_Build_Status_Test() { @@ -128,5 +138,44 @@ namespace Volo.Abp.Cli.Build existingBuildStatus.MergeWith(newBuildStatus); existingBuildStatus.GetChild("abp").SucceedProjects.Count.ShouldBe(2); } + + [Fact] + public void Should_Update_Repository_CommitId_When_New_CommitId_Is_Not_Empty() + { + var existingBuildStatus = new GitRepositoryBuildStatus("volo", "dev"); + + var newBuildStatus = new GitRepositoryBuildStatus( + existingBuildStatus.RepositoryName, + existingBuildStatus.BranchName + ) + { + CommitId = "42" + }; + + existingBuildStatus.MergeWith(newBuildStatus); + + existingBuildStatus.CommitId.ShouldBe("42"); + } + + [Fact] + public void Should_Not_Update_Repository_CommitId_When_New_CommitId_Is_Empty() + { + var existingBuildStatus = new GitRepositoryBuildStatus("volo", "dev") + { + CommitId = "21" + }; + + var newBuildStatus = new GitRepositoryBuildStatus( + existingBuildStatus.RepositoryName, + existingBuildStatus.BranchName + ) + { + CommitId = "" + }; + + existingBuildStatus.MergeWith(newBuildStatus); + + existingBuildStatus.CommitId.ShouldBe("21"); + } } }