2

次の設定があります。

  • Win 7Professional64ビット
  • CCNet v1.6.7981.1
  • msysgit v1.7.9-preview20120201

私たちのGitサーバーは、Ubuntuサーバー64ビットを実行している別のマシンにインストールされています。CCNet Windowsサービスは管理者アカウントで実行され、sshを使用してUbuntugitサーバーにアクセスします。強制ビルドを実行する場合、問題はありません。ソースとビルドを取得することは問題ありません。タイムトリガーで実行すると、次の例外が発生します。

ThoughtWorks.CruiseControl.Core.CruiseControlException: Source control operation has timed out.
   at ThoughtWorks.CruiseControl.Core.Sourcecontrol.ProcessSourceControl.Execute(ProcessInfo processInfo)
   at ThoughtWorks.CruiseControl.Core.Sourcecontrol.Git.GitFetch(IIntegrationResult result)
   at ThoughtWorks.CruiseControl.Core.Sourcecontrol.Git.CreateUpateLocalRepository(IIntegrationResult result)
   at ThoughtWorks.CruiseControl.Core.Sourcecontrol.Git.GetModifications(IIntegrationResult from, IIntegrationResult to)
   at ThoughtWorks.CruiseControl.Core.Sourcecontrol.MultiSourceControl.GetModifications(IIntegrationResult from, IIntegrationResult to)
   at ThoughtWorks.CruiseControl.Core.Sourcecontrol.QuietPeriod.GetModificationsWithLogging(ISourceControl sc, IIntegrationResult from, IIntegrationResult to)
   at ThoughtWorks.CruiseControl.Core.Sourcecontrol.QuietPeriod.GetModifications(ISourceControl sourceControl, IIntegrationResult lastBuild, IIntegrationResult thisBuild)
   at ThoughtWorks.CruiseControl.Core.IntegrationRunner.GetModifications(IIntegrationResult from, IIntegrationResult to)
   at ThoughtWorks.CruiseControl.Core.IntegrationRunner.Integrate(IntegrationRequest request)

私たちのccnetプロジェクトは複数のgitリポジトリで動作します。サンプル構成は次のようになります。

<sourcecontrol type="multi">
      <sourceControls>
        <git>
          <repository>git@somerepo.git</repository>
          <executable>$(gitcmdpath)</executable>
          <timeout units="minutes">10</timeout>
        </git>
        <git>
          <repository>git@somerepo2.git</repository>
          <executable>$(gitcmdpath)</executable>
          <timeout units="minutes">10</timeout>
          <workingDirectory>c:\somerepo2</workingDirectory>
        </git>
      </sourceControls>
    </sourcecontrol>

同じリポジトリのセットを利用するいくつかのccnetプロジェクトがあり(ただし、異なるフォルダにチェックアウトされています)、コードが変更されていない場合、それらはすべて同じように失敗します。私はたまたまインターバルトリガーを同じ長さに設定しているので、それらはすべてリポジトリをほぼ同時にチェックしています。これが彼らがタイムアウトする理由でしょうか?また、これをデバッグするためにccnet.logからこれを参照するものが見つかりません。

どんな助けでも歓迎します。

4

1 に答える 1

1

現在、継続的なビルドを1つのキューに入れ、完全なビルドを別のキューに入れることで回避策があります。継続的ビルドは30秒間隔でのソース管理の変更に基づいていますが、フルビルドは1日1回であるため、現在は分離されています。私はこれを約2週間実装しましたが、問題はありません。

于 2012-05-04T05:25:14.213 に答える