我在让 Jenkins 正确使用 MSBuild 并将我构建的网站部署到 Web 服务器时遇到问题。
到目前为止,我已经在 Visual Studio 2012 中创建了网站,并使用其中的向导创建了一个发布配置文件,该配置文件将成功发布到我的 Web 服务器。然后,我在同一台 PC 上使用了 MSBuild 的命令行版本来测试命令行参数是否正常工作……他们可以!然后,我在 Jenkins 中添加了一个构建步骤,用于指向相同的 .sln 文件并使用相同的参数的 MSBuild,但由于某种原因,它没有按预期进行 Web 部署,它只是创建了一个 zip 文件。我看不到任何告诉它应该像这样包装它并且我有点生气的东西。
VS 创建(我正在使用)的发布配置文件如下:
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup>
<WebPublishMethod>MSDeploy</WebPublishMethod>
<LastUsedBuildConfiguration>Release</LastUsedBuildConfiguration>
<LastUsedPlatform>Any CPU</LastUsedPlatform>
<SiteUrlToLaunchAfterPublish />
<ExcludeApp_Data>False</ExcludeApp_Data>
<MSDeployServiceURL>http://10.215.134.184/msdeployagentservice</MSDeployServiceURL>
<DeployIisAppPath>Default Web Site/mvcCPE</DeployIisAppPath>
<RemoteSitePhysicalPath />
<SkipExtraFilesOnServer>True</SkipExtraFilesOnServer>
<MSDeployPublishMethod>RemoteAgent</MSDeployPublishMethod>
<EnableMSDeployBackup>False</EnableMSDeployBackup>
<UserName>Administrator</UserName>
<_SavePWD>True</_SavePWD>
<PublishDatabaseSettings>
<Objects xmlns="">
<ObjectGroup Name="DefaultConnection" Order="1" Enabled="False">
<Destination Path="" />
<Object Type="DbDacFx">
<PreSource Path="Data Source=.\SQLEXPRESS;Initial Catalog=aspnet-mvcCPE-20130228154150;Integrated Security=True" includeData="False" />
<Source Path="$(IntermediateOutputPath)AutoScripts\DefaultConnection_IncrementalSchemaOnly.dacpac" dacpacAction="Deploy" />
</Object>
<UpdateFrom Type="Web.Config">
<Source MatchValue="Data Source=.\SQLEXPRESS;Initial Catalog=aspnet-mvcCPE-20130228154150;Integrated Security=SSPI" MatchAttributes="$(UpdateFromConnectionStringAttributes)" />
</UpdateFrom>
</ObjectGroup>
</Objects>
</PublishDatabaseSettings>
</PropertyGroup>
<ItemGroup>
<MSDeployParameterValue Include="$(DeployParameterPrefix)DefaultConnection-Web.config Connection String" />
</ItemGroup>
</Project>
在命令行上,我使用以下命令:
msbuild mvcCPE.sln /property:Configuration=Release /property:DeployOnBuild=True /property:PublishProfile=mvcCPE.pubxml /property:Password=xxxxxx
在詹金斯我有以下内容:
MSBuild Version: v4.0.30319
MSBuild Build File: C:\Program Files\Jenkins\jobs\CPE2\workspace\mvcCPE.sln
Command Line Arguments: /property:Configuration=Release /property:DeployOnBuild=True /property:PublishProfile=mvcCPE.pubxml /property:Password=nimdasys
据我所知,詹金斯应该正在构建我的网站并将其部署到服务器上,但事实并非如此。非常感谢任何帮助(我对 Jenkins 和 VS 还很陌生)。