4

希望有人可以帮助我。让 TeamCity 启动并运行,并在各种项目上进行构建。我希望能够自动将成功的 TeamCity 运行构建复制/部署到测试服务器。

我正在考虑使用 PowerShell 来执行此操作,但我对其他想法持开放态度。有人可以向我提供有关如何完成此任务的信息。

谢谢。

4

4 回答 4

4

我使用 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。这是构建的唯一键,每个项目都不同。您可以通过将团队城市网站导航到该构建的配置来发现它是什么 - 它会在那里。也有按名称引用配置的说明,但我们发现这太冗长而无法打扰。

于 2009-07-10T13:07:25.017 回答
1

您还可以在测试服务器上安装 TeamCity 代理。这实际上就是 TeamCity 的用途。

于 2009-07-29T09:53:50.420 回答
1

我今天一直在为我们的应用程序实现这一点。使用 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>
于 2009-07-10T15:26:23.797 回答
0

我在 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:' 是一个映射到测试服务器的驱动器。

只有当有人在没有正确文件夹结构的环境中构建项目时,才需要进行错误处理以避免脚本错误。

到目前为止,一切都很好!

于 2009-07-29T09:46:19.000 回答