deployment - 部署工具:获取工具将在不执行部署脚本的情况下执行的操作列表

  显示原文与译文双语对照的内容
0 0

我们正在计算用于部署的MSBuild和Nant的过程。 我们可以把自己的工具卷起来。 different业务单位--让我们称之为 DeptA --的一件事就是让( 在它最好的情况下) in DeptA script script script script script 。 现在我们用. bat 文件来做这个。 我们讨厌蝙蝠档案。 如果我们要DeptA学习新的脚本语言( nant,msbuild ),那么它们可以能会阻止你的错误。

理想的构建工具可以在不做任何事情的情况下打开一个操作列表。 沿着以下行:

  • 在服务器Z 上停止服务 ABC
  • 停止服务器Z 上的服务 DEF
  • 将所有文件从serverdirAdirB复制到 server2dirC
  • 在服务器Z 上启动服务 ABC
  • 在服务器Z 上启动服务 DEF
  • 在目录serverdirAdirC中运行所有脚本

是否可以使用MSBuild执行这里操作? NAnt没有我学习 XSL?

时间: 原作者:

0 0

如果我是你,我实际上会把MSBuild和混合在一起。 应该让MSBuild脚本执行诸如启动/停止服务 等等 之类的操作,然后让MSDeploy复制文件副本。 使用MSDeploy可以使用 -whatif switch 指示你只希望执行要执行的操作,而不是实际执行它。 不幸的是,不幸的是,不会将这样的选项提供给你将要在脚本中。 你可以使用属性和条件进行这里操作。 例如它可能类似于:


<Project.. .>
 <PropertyGroup>
 <!-- 
 Create the property to use, and declare a default value.
 Here I've defaulted this to true because it is better to force the
 caller to explicitly specify when to perform the action instead of it
 being the default.
 -->
 <SimulateExecution Condition= '$(SimulateExecution)'==''>true</SimulateExecution>
 </PropertyGroup>

 <Target Name="Deploy">
 <Message Text="Deploy started"/>

 <Message Text="Stop service ABC on server Z"/>
 <WindowsService.. . Condition=" '$(SimulateExecution)'=='false'"/>

 <Message Text="Stop service DEF on server Z"/>
 <WindowsService.. . Condition=" '$(SimulateExecution)'=='false'"/>

 <!-- Call MSDeploy with the Exec task. -->
 <PropertyGroup>
 <MSDeployCommand>...msdeploy.exe YOUR_OPTIONS_HERE</MSDeployCommand>

 <!-- Append the -whatif to the command if this is just a simulation -->
 <MSDeployCommand Condition= '$(SimulateExecution)'=='false'">$(MSDeployCommand) -whatif</MSDeployCommand>
 </PropertyGroup>


 <Exec Command="$(MSDeployCommand)"/>

. . . More things here
 </Target>
</Project>

对于服务操作,可以使用扩展包( ) 中的WindowsService任务。 你得把里面的空白填满。

当你调用MSDeploy时,你应该只使用任务来调用你的参数。 如果你通过 -whatif,它实际上不会执行操作,只是报告它会做什么。 这些将记录到msbuild日志中。 所以如果你用/fl 调用 msbuild.exe,你会把那些动作写到文件中。 我在采取这种方法时唯一的问题是,对于 msdeploy.exe 你很多时间都必须使用完整的路径( 。 ) 有时很棘手,所以要小心这样的路径。

...