希望有人可以帮助我。让 TeamCity 启动并运行,并在各种项目上进行构建。我希望能够自动将成功的 TeamCity 运行构建复制/部署到测试服务器。
我正在考虑使用 PowerShell 来执行此操作,但我对其他想法持开放态度。有人可以向我提供有关如何完成此任务的信息。
谢谢。
希望有人可以帮助我。让 TeamCity 启动并运行,并在各种项目上进行构建。我希望能够自动将成功的 TeamCity 运行构建复制/部署到测试服务器。
我正在考虑使用 PowerShell 来执行此操作,但我对其他想法持开放态度。有人可以向我提供有关如何完成此任务的信息。
谢谢。
我使用 WGet。以下是形成团队城市 URL 的说明。您可以在 powershell 中执行 WGet,但如果您只想使用 powershell 来实现此功能,则可以使用普通的wget 实用程序来执行 windows。
编辑:这是我们 QA 部署的一个示例(更改名称以保护有罪者):
"C:\Program Files (x86)\NcFTP\wget.exe" "http://teamcityserver.domain.com:8111/guestAuth/repository/download/bt6/.lastFinished/Artificat.ear"
wget 的位置无关紧要,它恰好在哪里。参数的 guestAuth 部分指定了身份验证类型(在我们的例子中,我们启用了访客授权而不必担心密码 - 它只是一个内部服务器,并受防火墙保护)。这些选项在我链接到的文档中。
参数的另一个有趣特征是 bt6。这是构建的唯一键,每个项目都不同。您可以通过将团队城市网站导航到该构建的配置来发现它是什么 - 它会在那里。也有按名称引用配置的说明,但我们发现这太冗长而无法打扰。
您还可以在测试服务器上安装 TeamCity 代理。这实际上就是 TeamCity 的用途。
我今天一直在为我们的应用程序实现这一点。使用 msbuild。我发现这非常有用,因为我们可以添加自定义步骤,例如修改配置文件、归档实时构建和通知人们更改。
这是一个您可能会发现有用的构建脚本。它预编译应用程序,然后将其复制到部署目录中。
<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003" DefaultTargets="Deploy">
<PropertyGroup>
<WebsitePublishDirectory>Artifacts\Website</WebsitePublishDirectory>
<WebsiteDeployDirectory>\\SERVERNAME\Path\to\web\root</WebsiteDeployDirectory>
<WebsiteProject>[Project name here]</WebsiteProject>
</PropertyGroup>
<Target Name="Deploy">
<RemoveDir Directories="$(WebsitePublishDirectory)" />
<AspNetCompiler
VirtualPath="test"
PhysicalPath="$(WebsiteProject)"
TargetPath="$(WebsitePublishDirectory)"
Force="true"
Debug="false" />
<ItemGroup>
<PublishedFiles Include="$(WebsitePublishDirectory)\**" />
</ItemGroup>
<Copy SourceFiles="@(PublishedFiles)" DestinationFolder="$(WebsiteDeployDirectory)\%(RecursiveDir)" />
</Target>
</Project>
我在 Visual Studio 中创建了一个 Post Build Script,如下所示:
c:\TeamCityBuild\pt_build.bat
退出 0
然后在 TC 服务器上,我有一个如下所示的 .bat:
net use r: \192.168.16.85\WebSite 密码 /USER:domain.com\administrator
xcopy "C:\TeamCityBuild\path\WebSite*" "r:\" /R /Y /E
r: \192.168.16.85\WebSite /DELETE
if errorlevel 1 goto buildFAILED
:buildOK
echo Wehej!!!
退出 0
:buildFAILED
echo 哦不!!!
1号出口
'R:' 是一个映射到测试服务器的驱动器。
只有当有人在没有正确文件夹结构的环境中构建项目时,才需要进行错误处理以避免脚本错误。
到目前为止,一切都很好!