2013-06-26 83 views
3

我正在使Jenkins正确使用MSBuild并将我构建的网站部署到Web服务器时出现问题。Jenkins-MSBuild Web部署创建zip而不是部署

我迄今在Visual Studio 2012中创建了该网站,并使用该向导创建了发布配置文件,该配置文件将成功发布到我的Web服务器。然后,我在同一台PC上使用命令行版本的MSBuild来测试命令行参数是否正常工作......他们这样做!然后,我为MSBuild添加了一个构建步骤,指向相同的.sln文件并使用相同的参数,但由于某种原因,它不按预期做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 

据我所知,詹金斯应该建设一个d将我的网站部署到服务器,但事实并非如此。任何帮助非常感谢(我对詹金斯和VS相当新)。

回答

7

事实证明,更多的研究提供了如何解决这个问题的最后提示。

在今天上午我搜索了一下后,我发现here这个帖子是关于在没有VS的Jenkins上构建项目的。根据答案中的建议,我将我的开发PC上的C:\Program Files (x86)\MSBuild\Microsoft\VisualStudio\v11.0文件夹和文件复制到构建PC上的相同位置,并使用另外的开关/property:VisualStudioVersion=11.0再次运行构建。这导致我得到的错误:

C:\Program Files\MSBuild\Microsoft\VisualStudio\v11.0\Web\Microsoft.Web.Publishing.targets(3676,5): error : Package/Publish task Microsoft.Web.Publishing.Tasks.IsCleanMSDeployPackageNeeded failed to load Web Deploy assemblies. Microsoft Web Deploy is not correctly installed on this machine. Microsoft Web Deploy v3 or higher is recommended. [C:\Program Files\Jenkins\jobs\Call_Plan_Editor_2\workspace\mvcCPE\mvcCPE.csproj] 

所以事实证明我实际上没有在Web在所有部署加载在构建服务器组件(也就是当你让别人设置它你会得到什么)所以我从微软下载并安装了Web Deploy V3,经过多次调整后,它现在可以正确构建和部署。

希望没有其他人能像我一样放慢思考这些事情,但我想回答我自己的问题,因为我讨厌找到只是说“好,我修好了”的帖子而没有进行探索。

1

也必须在客户端安装Web部署。该机器,您正在从中部署。