Jenkins - MSBuild Web Deploy创建zip文件而非部署

3
我在使用Jenkins时遇到了问题,无法正确地使用MSBuild并将构建好的网站部署到Web服务器上。
我已经在Visual Studio 2012中创建了网站,并使用向导创建了一个发布配置文件,可以成功地发布到我的Web服务器。然后,我在同一台PC上使用MSBuild的命令行版本来测试命令行参数是否正确...结果是正确的!因此,我在Jenkins中添加了一个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

在 Jenkins 中我有以下内容:

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应该正在构建并将我的网站部署到服务器上,但实际上没有这样。非常感谢任何帮助(我对Jenkins和VS还比较陌生)。

2个回答

7
事实证明,进一步的研究提供了解决此问题的最后线索。
今天早上进行了进一步搜索,我找到了这里的帖子,其中讨论了在没有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 Deploy程序集(当你让别人用你需要的“所有东西”设置它时,你就会得到这样的结果!)所以我从Microsoft下载并安装了Web Deploy V3,并进行了一些调整后,现在可以正确地构建和部署。

希望没有其他人像我一样慢到首先错过这样的事情,但我想回答自己的问题,因为我讨厌找到那些只说“好的,我修好了”的帖子而没有解释。


1
需要在客户端安装Web Deploy。即从中进行部署的机器。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接