【问题标题】:Using TFS Build to run .bat files on remote server使用 TFS Build 在远程服务器上运行 .bat 文件
【发布时间】:2023-08-30 17:11:02
【问题描述】:

我正在进行的项目是使用 TFS Build 和 Web Deploy 来处理网站的部署和服务器服务。我们还有一个需要部署到服务器的 Windows 服务。

我的问题是:有没有办法将 Windows 服务从 TFS 构建服务器部署到 Web 服务器?

我遇到的另一个问题是服务需要在部署之前停止。我已尝试修改构建配置文件,但无法使其正常工作。

谢谢。

【问题讨论】:

    标签: windows-services tfsbuild webdeploy


    【解决方案1】:

    选项:

    1. 如果您在 Web 服务器上安装 TFSBuildagent 服务并授予在 Web 服务器上运行该服务的用户管理员权限,那么您可以为部署/安装创建新的构建定义。这是相当简单直接的,但这仅在您的 Web 服务器数量有限(希望在所有 2000 台服务器上安装 TFS BUild 代理)并且仅在非生产环境中工作时才有效。这就是我们为非产品部署所做的事情,我创建了一个仅用于部署的构建定义,它负责停止服务等所有事情。

    2. 如果在构建服务器上运行 TFSBuild 服务的用户在 Web 服务器上有足够的权限,那么您可以使用 psexec 或 powershell 远程运行您的命令。阅读以下链接: 1. PSEXEC

    3. Powershell Remote commands

    您在构建配置文件中做了什么来停止该服务?用户是否有足够的权限?

    在 TFS 构建工作流程中,没有内置的活动/流程可以帮助您在远程机器上运行脚本。

    第 1 步是确定如何在远程计算机上运行脚本,如上所述,您可以使用 PSEXEC 或 Powershell(尽管在远程计算机上运行 PowerShell 的设置可能稍微复杂一些)。

    Step2,编写实际脚本来完成工作,停止服务,安装 MSI 等。

    第 3 步,编辑您当前的构建定义 - 创建一个新的自定义活动或利用构建定义中的 InvokeProcess 活动来调用您在第 2 步中创建的脚本。InvokeProcess Activity

    【讨论】:

    • 不能在服务器上安装 TFS Build。我希望有一种方法可以将其构建到构建配置工作流程中,以在远程服务器上调用命令。构建服务器对 Web 服务器具有完全权限,因此帐户可以执行操作,只需将其添加到工作流中即可。