团队构建 - 部署多个配置
问题描述:
我有一个夜间脚本,应该构建调试和发布zip文件,然后通过ftp将这些文件上传到客户端。团队构建 - 部署多个配置
我总是使用AfterDropBuild部署单一配置 - 工作正常 - 但在单个版本中构建两个配置似乎都不起作用。我希望AfterDropBuild会执行两次。我当然可以在AfterDropBuild中编写任务来处理这两个配置,但这并不正确。
有没有更好的方法?
<Target Name="AfterDropBuild">
<CreateProperty Value="$(DropLocation)\ToClient">
<Output PropertyName="DeploymentFolder" TaskParameter="Value" />
</CreateProperty>
<GetBuildProperties TeamFoundationServerUrl="$(TeamFoundationServerUrl)" BuildUri="$(BuildUri)">
<Output TaskParameter="BuildNumber" PropertyName="BuildNumber"></Output>
</GetBuildProperties>
<CreateProperty Value="%(ConfigurationToBuild.FlavorToBuild)">
<Output PropertyName="ConfigFlavor" TaskParameter="Value" />
</CreateProperty>
<MakeDir Directories="$(DeploymentFolder)" />
<BuildStep TeamFoundationServerUrl="$(TeamFoundationServerUrl)"
BuildUri="$(BuildUri)" Name="ZipSite"
Message="Zipping Site">
<Output TaskParameter="Id" PropertyName="ZipStepID" />
</BuildStep>
<!-- get a list of all the files in the published web sites -->
<CreateItem Include="$(OutDir)_PublishedWebSites\Site.Web\**\*.*" >
<Output TaskParameter="Include" ItemName="FilesToZip"/>
</CreateItem>
<CreateItem Include="$(OutDir)\Site.msi" >
<Output TaskParameter="Include" ItemName="FilesToZip"/>
</CreateItem>
<!-- zip the deployment files -->
<Zip Files="@(FilesToZip)"
ZipFileName="$(DeploymentFolder)\Site_$(BuildNumber)_$(ConfigFlavor).zip"
WorkingDirectory="$(OutDir)_PublishedWebSites\Site.Web" />
<BuildStep TeamFoundationServerUrl="$(TeamFoundationServerUrl)"
BuildUri="$(BuildUri)" Id="$(ZipStepId)" Status="Succeeded" />
<!-- upload the zip -->
<BuildStep TeamFoundationServerUrl="$(TeamFoundationServerUrl)"
BuildUri="$(BuildUri)" Name="UploadZip"
Message="Uploading Zip to Client">
<Output TaskParameter="Id" PropertyName="ZipUploadID" />
</BuildStep>
<CreateItem Include="$(DeploymentFolder)\*.zip" >
<Output TaskParameter="Include" ItemName="FilesToUpload" />
</CreateItem>
<FtpUpload
RemoteUri="ftp://ftp.blahblah.com/"
LocalFiles="@(FilesToUpload)"
RemoteFiles="@(FilesToUpload->'%(RecursiveDir)%(Filename)%(Extension)')"
UserName="user"
Password="password"
/>
<BuildStep TeamFoundationServerUrl="$(TeamFoundationServerUrl)"
BuildUri="$(BuildUri)" Id="$(ZipUploadID)" Status="Succeeded" />
</Target>
感谢
答
,只要你喜欢的SolutionsToBuild(您可以添加尽可能多的配置,比如我们建立若干独立的库解决方案,然后被从相同的源代码(一个解决方案建立了两个不同的应用程序),但从两个配置使用#define修改输出代码构建)
当构建完成时,您只会调用一次,但该处理程序可以根据需要运行尽可能多的流程/步骤来部署结果(在我们的情况中,我们将两个已编译的应用程序以及一批资源文件构建成10个不同的客户特定的应用程序c安装程序,所以我们的后期构建有10个“步骤”,每个步骤产生另一个最终输出)。
您可以将这些命令放到自己的目标中,这样就可以很容易地包含/排除构建的不同结果,如果您需要定期切割和更改内容 - 但是一旦设置好了,无论如何你不需要经常改变它。然后,必须知道所有这些变体都将被构建的唯一“特殊情况”代码将是构建后的目标,这将仅取决于您需要的任何目标。所以它结束了很整洁。
谢谢,这几乎是我所设想的。如果PackageBinaries或AfterDropBuild为每个配置运行一次,它会更好。 – Jonesie 2010-01-18 17:30:11