Browse Source

correctly update repository commitId when building projects

pull/5418/head
İsmail ÇAĞDAŞ 6 years ago
parent
commit
7d551758f6
  1. 4
      abp-build-config.json
  2. 2
      framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/Build/DefaultBuildStatusGenerator.cs
  3. 3
      framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/Build/DefaultDotNetProjectBuilder.cs
  4. 5
      framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/Build/GitRepositoryBuildStatus.cs
  5. 8
      framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/Commands/BuildCommand.cs
  6. 1
      framework/test/Volo.Abp.Cli.Core.Tests/Volo/Abp/Cli/Build/BuildStatusGenerator_Tests.cs
  7. 49
      framework/test/Volo.Abp.Cli.Core.Tests/Volo/Abp/Cli/Build/GitRepositoryBuildStatus_Tests.cs

4
abp-build-config.json

@ -0,0 +1,4 @@
{
"Name": "abp",
"RootPath": "D:\\GitHub\\abp"
}

2
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

3
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))

5
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);

8
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();

1
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()
{

49
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<IGitRepositoryHelper>();
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");
}
}
}

Loading…
Cancel
Save