我最近开始在门控办理登机手续时自定义我的构建活动,只使用MSBuild来管理我的任务。它的工作相对较好。 但问题是:任务工作流程完全基于先前关于任务执行时间到optime并行性能的知识。以下是我的工作流程的恢复版本,以便您可以了解问题
为了优化我的工作流程,我想并行运行解决方案的构建,"额外的东西"以及数据库的构建/发布,但我不想混合不必要的依赖,比如等待构建解决方案的数据库迁移或等待"额外的东西"的测试执行。
在MSBuild和WWF4中,我只知道如何通过在一轮中执行所有依赖项来并行化活动,然后执行另一组依赖项......
有更好的方法吗?我的意思是,定义工作流程以便自动解决和优化依赖关系。
P.S。:我正在使用TFS 2012。
更新 我已经做了两次并行测试构建我的项目解决方案,看看会发生什么。原来一个MSBuild节点在尝试构建我的解决方案之前等待另一个节点完成,然后说它是最新的。例:
<Project>
<ItemGroup>
<Project Include="MyProject.sln" />
<Project Include="MyProject.sln" />
</ItemGroup>
<Target Name="Build">
<MSBuild Projects="@(Project)" Targets="Build" BuildInParallel="true" />
</Target>
</Project>
<!-- When I check the build log it says
1> Project is building MyProject.sln (2) ...
1> Project is building MyProject.sln (2:2) ...
2> Building with tools...
2> ...
2:2> Building with tools...
2> ...
2> ...
2> ...
2> Done building
2:2> Target ... skipped because it was previously built successfully
2:2> Done building
-->
这是一种理想的行为,但是当我尝试依赖它来构建我的构建工作流程时,我的项目同时构建了两次,给了我很多错误。
答案 0 :(得分:0)
您可能会受益于将所有集成测试移至已部署的环境,而不是在构建期间执行它们。首先,构建服务器适合于该任务,正如您所发现的那样,其次是您正在阻止构建队列。
理想情况下,您应该只在构建服务器上运行单元测试并延迟集成测试。我会使用发布管理工具在构建之后自动部署我的应用程序,然后运行集成测试。我使用Visual Studio的Release Management(适用于2012),但章鱼部署也是一个很好的解决方案。
http://nakedalm.com/create-release-management-pipeline-professional-developers/