如何使用 TeamCity 模拟 VisualStudio 发布 Web 功能
How to use TeamCity to emulate VisualStudio Publish Web feature
Visual Studio (VS) 提供了一个 'Publish Web' 功能,您可以从中 select 一个配置文件并生成构建 artfects - 这按预期工作,我的 Web.config从配置文件转换而来(比如 web.Test.config)。
如果我使用 /p:Configuration="Test" 通过 teamcity 构建,构建很好,但我没有看到任何转换 - 我的期望是好的。我确实设置了 octoPack 运行。
我确实有其他 VS 项目,我使用 team city 构建 nuget 包,然后通过 Octopus 部署到各种环境。 Octopus 在哪里进行转换。我想我混淆了我对 teamcity 的期望,即它不是 VS 的 Publish-Web 的模拟。即使我不使用 octopus 部署到环境中,我也必须使用 teamcity + octopus 这两个步骤来构建输出可交付成果。
要使其正常工作,您必须在发布配置文件 *.pubxml 中进行配置。然后,在 TeamCity 中,您应该将此文件用作构建步骤。这是一个示例,假设您在 Debug 和 Release 旁边有 Test 配置 Visual Studio:
Test.pubxml
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup>
<WebPublishMethod>MSDeploy</WebPublishMethod>
<AllowUntrustedCertificate>True</AllowUntrustedCertificate>
<Configuration>Test</Configuration>
<LastUsedBuildConfiguration>Test</LastUsedBuildConfiguration>
<LastUsedPlatform>Any CPU</LastUsedPlatform>
<SiteUrlToLaunchAfterPublish>http://your-website:8080/</SiteUrlToLaunchAfterPublish>
<LaunchSiteAfterPublish>False</LaunchSiteAfterPublish>
<ExcludeApp_Data>False</ExcludeApp_Data>
<MSDeployServiceURL>server-name</MSDeployServiceURL>
<DeployIisAppPath>SITE_NAME_ON_IIS</DeployIisAppPath>
<RemoteSitePhysicalPath />
<SkipExtraFilesOnServer>True</SkipExtraFilesOnServer>
<MSDeployPublishMethod>WMSVC</MSDeployPublishMethod>
<EnableMSDeployBackup>False</EnableMSDeployBackup>
<UserName>UserNameWithPermission</UserName>
<_SavePWD>True</_SavePWD>
</PropertyGroup>
</Project>
命令行参数:
/p:DeployOnBuild=true
/p:PublishProfile="%teamcity.build.workingDir%\PathToConfiguration\Test.pubxml"
/p:SolutionDir="%teamcity.build.workingDir%"
/p:Password=PASSWORD
构建文件路径应该是您的 *.csproj 文件:
TeamCity Configuration
Visual Studio (VS) 提供了一个 'Publish Web' 功能,您可以从中 select 一个配置文件并生成构建 artfects - 这按预期工作,我的 Web.config从配置文件转换而来(比如 web.Test.config)。
如果我使用 /p:Configuration="Test" 通过 teamcity 构建,构建很好,但我没有看到任何转换 - 我的期望是好的。我确实设置了 octoPack 运行。
我确实有其他 VS 项目,我使用 team city 构建 nuget 包,然后通过 Octopus 部署到各种环境。 Octopus 在哪里进行转换。我想我混淆了我对 teamcity 的期望,即它不是 VS 的 Publish-Web 的模拟。即使我不使用 octopus 部署到环境中,我也必须使用 teamcity + octopus 这两个步骤来构建输出可交付成果。
要使其正常工作,您必须在发布配置文件 *.pubxml 中进行配置。然后,在 TeamCity 中,您应该将此文件用作构建步骤。这是一个示例,假设您在 Debug 和 Release 旁边有 Test 配置 Visual Studio:
Test.pubxml
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup>
<WebPublishMethod>MSDeploy</WebPublishMethod>
<AllowUntrustedCertificate>True</AllowUntrustedCertificate>
<Configuration>Test</Configuration>
<LastUsedBuildConfiguration>Test</LastUsedBuildConfiguration>
<LastUsedPlatform>Any CPU</LastUsedPlatform>
<SiteUrlToLaunchAfterPublish>http://your-website:8080/</SiteUrlToLaunchAfterPublish>
<LaunchSiteAfterPublish>False</LaunchSiteAfterPublish>
<ExcludeApp_Data>False</ExcludeApp_Data>
<MSDeployServiceURL>server-name</MSDeployServiceURL>
<DeployIisAppPath>SITE_NAME_ON_IIS</DeployIisAppPath>
<RemoteSitePhysicalPath />
<SkipExtraFilesOnServer>True</SkipExtraFilesOnServer>
<MSDeployPublishMethod>WMSVC</MSDeployPublishMethod>
<EnableMSDeployBackup>False</EnableMSDeployBackup>
<UserName>UserNameWithPermission</UserName>
<_SavePWD>True</_SavePWD>
</PropertyGroup>
</Project>
命令行参数:
/p:DeployOnBuild=true
/p:PublishProfile="%teamcity.build.workingDir%\PathToConfiguration\Test.pubxml"
/p:SolutionDir="%teamcity.build.workingDir%"
/p:Password=PASSWORD
构建文件路径应该是您的 *.csproj 文件:
TeamCity Configuration