4

私はしばらく前にcontinuous integration working in Delphiを得るのを助けてくれました。 1つの副回答にcruisecontrolを使用するための部分的な不完全な(私のために働いていない)情報[here] [2]があります。msbuildとdelphi XEで動作するサンプルcruisecontrol.net ccnet.config?

私はJenkins/Hudsonの仕事を手に入れました。それについての簡単な部分は、(Delphiを使用して)設定が純粋にWebブラウザによって行われることです。しかし、CruiseControl.netでは設定がはるかに難しいです。

CruiseControlからのMSBUILDを使用したhello-world delphiプロジェクト(Project1.dproj)を構築し、サブバージョン(または水銀)の上流ソースがあるたびに自動再構築するサンプルccnet.configを見たい変更されました。

は、これまでのところ私が持っている:

  • をインストールし、CruiseControl.netバージョン1.6.7981とその実行を得ました。私ccnet.config

  • んが、有効なプロジェクトはここに私のccnet.configだ、もともと私は<exec>がなかったと<msbuild>するには、以下の提案のように変更:

    <cruisecontrol xmlns:cb="urn:ccnet.config.builder"> 
         <!-- CRUISECONTROL.NET Server configuration --> 
         <project name="Project1"> 
          <tasks> 
           <msbuild> 
            <projectFile>project1.dproj</projectFile> 
           </msbuild> 
          </tasks> 
         </project> 
    </cruisecontrol> 
    

    アップデート:私はそれを読んで作ることが元々できませんでしたc:\builds\ccnet.configをccnet.exeから入手しましたが、コマンドラインパラメータでccnet.exe(非サービスモード)を実行でき、ccnet.configの問題を回避できました。ここで

  • +0

    実行する**正しい**コマンドラインを知っていれば、CC.NETが構成するのがはるかに難しいとは思わないが、違いはXMLファイル(CC.NET)を作成することであるか、Webページ(ジェンキンス)。私の答えはこちらをご覧ください:http://stackoverflow.com/questions/9685102/cruisecontrol-or-cruisecontrol-net/9729765#9729765 – TridenT

    答えて

    5

    は変更が存在する場合は05:00再構築されたプロジェクトのためのサンプルの構成ブロックである:

    <!-- DelphiCodeToDoc Project --> 
    <project name="DelphiCodeToDoc" queue="Q1" queuePriority="1"> 
        <category>Delphi</category> 
        <artifactDirectory>$(ArtifactBaseDir)\DelphiCodeToDoc</artifactDirectory> 
        <workingDirectory>$(WorkingBaseDir)\DelphiCodeToDoc</workingDirectory> 
        <triggers> 
        <scheduleTrigger time="05:00" buildCondition="IfModificationExists" name="Scheduled" /> 
        </triggers> 
    
        <!-- SVN implementation --> 
        <sourcecontrol type="svn"> 
        <trunkUrl>http://dephicodetodoc.svn.sourceforge.net/svnroot/dephicodetodoc/trunk/DelphiCodeToDoc/</trunkUrl> 
        <workingDirectory>$(WorkingBaseDir)\DelphiCodeToDoc</workingDirectory> 
        </sourcecontrol> 
    
        <!-- Build tasks to implement --> 
        <tasks> 
    
        <!-- Compile command-line application --> 
        <msbuild> 
         <executable>$(MSBuildPath)\MSBuild.exe</executable> 
         <workingDirectory>$(WorkingBaseDir)\DelphiCodeToDoc\Source</workingDirectory> 
         <projectFile>DCTD_cmd.dproj</projectFile> 
         <buildArgs>/target:Build /p:Config=Debug</buildArgs> 
         <timeout>900</timeout> 
         <logger>$(MSBuildLogger)</logger> 
        </msbuild> 
    
        <!-- Publishing compiled results --> 
        <publishers> 
        <merge> 
         <files> 
         <file>$(ArtifactBaseDir)\DelphiCodeToDoc\buildlogs*.xml</file> 
         </files> 
        </merge> 
    
        <!-- Statistics --> 
        <xmllogger /> 
        <rss/> 
        <statistics> 
        </statistics> 
    
        </publishers> 
    </project> 
    

    あなたは、変数を定義することができ$(MSBuildPath)このように:

    <cb:define MSBuildPath="C:\WINDOWS\Microsoft.NET\Framework\v3.5" /> 
    

    または交換を実際の経路で直接

    +0

    @WarrenP内部でCC.NETによって定義されています – TridenT

    +0

    @WarrenP oops、私は間違いを犯しました! $(MSBuildPath)(編集された返信)を定義して使用することができます。 $(WorkingBaseDir)に関しては、それは内部定義です。混乱させて申し訳ありません。 – TridenT

    +0

    今は大丈夫です! –

    3

    代わりの<exec>、これを使用する:

    <msbuild> 
        <projectFile>project1.dproj</projectFile> 
    </msbuild> 
    

    プロジェクトにトリガーを追加します。

    <triggers> 
        <intervalTrigger name="continuous" seconds="30" 
        buildCondition="IfModificationExists" initialSeconds="30" /> 
    </triggers> 
    

    残りは動作するはずです。

    1

    あなたのエラーメッセージ

    [CCNet Server:ERROR] INTERNAL ERROR: Access to the path 'C:\Program Files (x86)\CruiseControl.NET\server\Project1\WorkingDirectory' is denied.

    に関しては、あなたは、c:\buildsのようなものをCC.NETインストール外の作業ディレクトリとアーティファクトディレクトリを定義する必要があります。

    +0

    これはコメントとして良いでしょう。 –

    +0

    質問をすばやく変更しました。 – TridenT

    +0

    申し訳ありません。私は十分な質問に歴史を残そうとしていますが、それは理にかなっていますが、時にはあまりにも多くを編集することがあります。 –

    関連する問題