3

Jenkins で MSBuild を正しく使用し、構築した Web サイトを Web サーバーにデプロイする際に問題が発生しています。

これまで、Visual Studio 2012 で Web サイトを作成し、ウィザードを使用して、Web サーバーに正常に発行する発行プロファイルを作成しました。次に、同じ PC でコマンド ライン バージョンの MSBuild を使用して、コマンド ライン引数が正しく機能することをテストしました。これから、同じ .sln ファイルを指し、同じ引数を使用して MSBuild 用のビルド ステップを Jenkins に追加しましたが、何らかの理由で期待どおりに 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 は自分のサイトを構築してサーバーにデプロイする必要がありますが、そうではありません。どんな助けでも大歓迎です(私はJenkinsとVSにかなり慣れていません)。

4

2 に答える 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 アセンブリをビルド サーバーにまったくロードしていませんでした (これは、他の誰かに必要な「すべて」をセットアップさせたときに得られるものです!) そこで、Web Deploy をダウンロードしてインストールしました。 Microsoft の V3 であり、さらにいくつかの調整を行った後、正しくビルドおよびデプロイされるようになりました。

そもそもそのようなことを見逃すのが私ほど遅い人が他にいないことを願っていますが、説明なしで「OK、修正しました」と言うだけの投稿を見つけるのが嫌いなので、自分の質問に答えたかったのです。

于 2013-06-27T07:37:06.710 に答える