为“生成-部署-测试”工作流创建部署脚本
若要将应用程序部署与生成-部署-测试"工作流,您必须创建部署脚本并将其添加到您的生成。部署脚本是在您的实验室环境中复制生成到计算机条或CMD文件。如果生成包含安装包,您也可以使用您的部署脚本运行安装包。当您创建时"生成-部署-测试"工作流,可以将命令添加到运行部署脚本的工作流。在运行您的工作流时,生成控制器在您的实验室环境中运行在工作目录的这些命令在指定的计算机。
请参见 如何:为 SCVMM 环境创建“生成-部署-测试”工作流 或 如何:为标准环境创建“生成-部署-测试”工作流。这些节讨论如何创建,并用于部署脚本"生成-部署-测试"工作流:
生成文件为部署准备
编写自己的部署脚本
生成部署脚本
安装工作目录
添加部署脚本添加到工作流
- 固定变量
要求
- Visual Studio 旗舰版, Visual Studio 高级专业版, Visual Studio 专业测试工具版
生成文件为部署准备
您选择安装应用程序的方式是确定您的部署脚本需要完成的主要任务。安装您的应用程序可能仅涉及复制EXE到客户端,也可能涉及运行在多台计算机上安装该文件的部署包。下表描述部署的每种类型的这些任务。
重要事项 |
---|
如果应用程序依赖于未安装和配置,并由您的部署脚本的必备软件,应用程序部署之前,您必须手动安装,而您的实验室环境中准备计算机。如果使用部署环境快照中的一个SCVMM环境,必须确保快照安装的系统必备软件。 |
安装类型 |
说明 |
---|---|
Web服务部署包 |
警告
如果部署使用IIS的应用程序,IIS服务器上的实验室环境中必须具有配置的Web部署代理服务,在部署应用程序之前
您的部署脚本中使用的实验室环境必须将您的生成文件和部署包到目标计算机,然后运行部署包。为此,您可能需要通过域名、服务帐户名称和TFS服务器名称到部署脚本作为参数。这种类型的安装通常需要手动安装和配置必备软件(如web服务器或数据库服务器,在部署应用程序。系统必备软件的配置可能需要在目标计算机上的应用程序配置的特定任务。例如,因此,如果您的应用程序使用IIS,IIS服务器上的实验室环境中必须具有配置的Web部署代理服务,在部署应用程序。 |
未安装该包的生成文件 |
部署脚本必须将您的应用程序和生成文件添加到以便在您的实验室环境中。 |
安装包 |
警告
如果您安装部署包与您的生成-部署-测试工作流,则部署脚本必须处理生成的所有用户输入,当测试运行您的安装包时或您的应用程序部署将失败。
您的部署脚本中使用的实验室环境必须将您的包安装到目标计算机,然后运行安装包。当部署脚本运行您的安装包时,必须确保它是无提示安装。必须由您的部署脚本进程安装所需的用户输入。这包括凭据。如果您的部署脚本不处理生成的所有用户输入,当测试运行您的安装包,您的应用程序部署将失败。如果在部署Web应用程序,那么,在为您的部署需要安装包,建议您使用的InstallShield安装包。有关InstallShield的信息,请参见 Windows Installer Deployment。 |
编写自己的部署脚本
这些是部署脚本执行的最常见的任务:
获取生成控制器的生成路径。可以发送到部署脚本为命令的参数。
指定您的部署路径。
创建您的部署目录中。可以手动执行此操作,而不是在您的部署脚本。如果使用预先部署与工作流的环境快照,则在您的快照需要创建虚拟机中的内容。
复制您的从生成路径的部署包到部署路径。
运行在您的部署目录中部署包。
下面的说明演示部署脚本执行一些常规任务。
REM set build path
set buildlocation=%1
REM set deployment path
set targetdir="C:\deploy"
REM create deployment directory
if not exist %targetdir% (cmd /c mkdir %targetdir%)
REM copy build to the deployment directory
xcopy /c /y /e %buildlocation%\*.* %targetdir%
REM if you are using a deployment package you can run it here, after you copy it to your deployment directory
生成部署脚本
在创建您的部署脚本后,您必须签入到版本控制,然后配置它们,以便将其复制到生成输出。若要生成部署脚本,可以在您的解决方案必须首先,确保它们存储在Visual Studio项目下,而不只是。可以通过选择部署脚本执行此在Visual Studio在 *** 解决方案资源管理器 ***,然后在 属性下,更改 *** 复制输出目录 *** 到 *** 始终复制 ***。
安装工作目录
可以为每项指定工作目录设置命令您添加到生成-部署-测试"工作流的属性。当您指定工作目录,生成控制器将运行是分配给该角色的每台计算机工作目录中指定的命令。如果不指定工作目录,当您添加命令。您生成-部署-测试工作流,生成控制器将运行在默认工作directory−C:\Windows\System32的命令。
重要事项 |
---|
不要创建工作目录使用添加到您生成-部署-测试"工作流的命令;如果执行内容将不会重新创建,部署脚本尝试将文件复制到这些内容之前。 |
如果您指定工作目录,则必须确保目录中部署脚本复制之前创建对特定目录中的所有文件。使用可以使用来添加您的部署脚本。您生成-部署-测试"工作流的命令不要创建工作目录。否则,内容将不会重新创建,部署脚本尝试将文件复制到目录之前。若要确保工作目录在对它的部署脚本复制文件之前,会创建您的实验室环境必须手动创建在目标计算机上的目录,或者必须由您在所有命令复制文件的部署脚本创建目录切换到它。
添加部署脚本添加到工作流
添加Windows shell命令为您生成-部署-测试"工作流以将应用程序部署到您的实验室环境。如果使用部署脚本,命令必须将您的从生成控制器的部署脚本到目标计算机上的工作目录,然后运行部署脚本。但是,对于仅涉及一些文件复制到工作目录的简单应用程序安装,则工作流可以使用shell命令,而无需指定外部部署脚本。
如果要添加使用 cmd /c,从运行windows提示符运行的命令,例如 mkdir或运行批处理文件,必须启动命令。例如,copyexe 是批处理文件copyexe.bat的命令 cmd /c $(BuildLocation)\copyexe $(BuildLocation),复制可执行文件复制到虚拟机的本地目录。
固定变量:,当您添加时对这些命令生成、部署和测试工作流,则可以使用内置的变量来标识某些路径和设备。还可以通过这些变量到部署脚本。
$ (buildlocation)
您的生成文件所在的完整路径或生成放置位置,如果一个在配置生成-部署-测试"工作流。使用此变量访问您的生成文件。$ (InternalComputerName_<VM Name>)
虚拟机的计算机名称。SCVMM环境中。当您不知道主机的计算机名时,请使用此变量访问虚拟机主机。如果您有一个用于设置需要计算机名称的 Web 服务器的部署脚本,则可以将该计算机名称作为参数传递给此脚本。例如,因此,如果Web服务器的虚拟机名称为VM1,且计算机名称为MyWebServer,则可以键入 $(InternalComputerName_VM1),因为您的脚本和此的参数是将该值 MyWebServer 到您的脚本。$ (ComputerName_<VM Name>)
说明 网络隔离在SCVMM环境中:,如果为SCVMM环境中使用网络隔离,$(InternalComputerName_<VM Name>) 的值相同虚拟机的实例的在环境的每个副本的,但是,$(ComputerName_<VM Name>) 值是不同的。
虚拟机的完全限定域名。使用此变量的访问一台计算机从SCVMM环境外。您可能需要将此变量作为参数设置Web服务器。例如,因此,如果Web服务器的虚拟机名称为VM1,通过将 $(ComputerName_VM1) 参数可以访问虚拟机的完全限定域名对您的部署脚本。