对于持续部署,我似乎无法弄清楚如何让 Team Foundation Server 中的构建脚本(构建/高级/MSBuild 参数)正常工作。
是的,我使用了 Azure API 应用程序(预览版)配置文件选项并登录了 azure 帐户 - 我可以从那里发布。它似乎还使用了一个密码,我不确定它来自哪里,因为在查看“连接”信息时,它是隐藏的,并且当您在解决方案中查看它时,它在 pubxml
中不可用。
我曾经对 Web 应用程序使用以下 MSBuild 参数,但现在如果我引用新的 Azure 发布文件,它就不起作用。
我曾经使用过这样的东西:
/flp:verbosity="diagnostic" /p:DeployOnBuild=true /p:PublishProfile=xxx /p:AllowUntrustedCertificate=true /p:UserName="xxxx" /p:Password="xxxx"
总的来说,API 应用程序没有可用的密码,因此在测试参数时我删除了 /p
信息。我还确保在 Team Foundation Server 构建计算机上安装了适用于 VS 2013 的 Azure SDK,但这并没有解决任何问题。请注意,当此解决方案是 Web 应用程序时,CI 和 CD 工作正常。现在,如果我排除 CD,CI 对于 API 应用程序来说工作正常。
详细日志给我以下错误:
C:\Program Files (x86)\MSBuild\Microsoft\VisualStudio\v12.0\Web\Microsoft.Web.Publishing.targets (4350): The value for PublishProfile is set to 'xxx', expected to find the file at 'C:\Builds\4\Outcomes\yyy\src\zzz\zzz\Properties\PublishProfiles\xxx' but it could not be found.
现在文件确实匹配并且文件位于那里 - 我检查了构建机器的构建文件夹。消息中的引用不是指文件扩展名,但它一定不需要该部分。
无论如何,我之前已经在 Web 应用程序部署中经历过这一切,而我最需要做的就是删除 Team Foundation Server 服务用户工作区。我还删除了构建机器上的所有构建文件夹,以确保它是全新启动的。但这个问题没有任何进展。
最佳答案
我使用 VSO BuildVNext + MSBuild 来部署 API 应用程序,以下是 MSBuild 的参数:
msbuild.exe "[Solution_Name]" /p:DeployOnBuild=true /p:PublishProfile="[Publish_Profile_Name]" /p:UserName="[UserName]" /p:Password="[Password]" /p:platform="any cpu" /p:configuration="debug" /p:VisualStudioVersion="12.0"
我在 Azure 门户上发布期间收到的用户名和密码(您需要导航到 Api App Host 并下载发布设置)。
请注意,在构建服务器上存储密码并不安全,因此,在发布用于 Api 应用程序部署的 Azure Powershell 命令(可与订阅 ID 和证书一起使用)之前,应将其用作临时解决方案。
关于Azure API应用程序无法编写部署脚本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30112230/