1

アプリケーション用のビルド サーバーをセットアップしようとしています。強制ビルドを行うとき、パラメーターを使用して何をビルドするかを決定したいと考えています。以下に、主に DEV で動作するセットアップを示します。これは、if ステートメントがセットアップのスニペットであるためです。QA を選択するか UAT を選択するかに関係なく、常に false になります。以前にcruisecontrol.netでこれをやろうとした人はいますか?

<cb:define name="ParametersTemplate">
    <parameters>
      <selectParameter>
        <name>Target</name>
        <display>Target to Build</display>
        <description>Which target do you want to build?</description>
        <default>DEV</default>
        <allowedValues>
          <value name="DEV">DEV</value>
          <value name="QA">QA</value>
          <value name="UAT">UAT</value>
        </allowedValues>
      </selectParameter>
      <textParameter>
        <name>Branch</name>
        <display>Branch Name:</display>
        <description>Name of the branch you want to build?</description>
        <default>_DEV</default>
        <minimum>8</minimum>
        <maximum>255</maximum>
        <required>true</required>
      </textParameter>
    </parameters>
  </cb:define>

<cb:define name="ProjectTemplate">
    <workingDirectory>$(WorkingDir)\$(ProjectName)</workingDirectory>
    <artifactDirectory>$(ArtifactsDir)\$(ProjectName)</artifactDirectory>
    <sourcecontrol type="svn" cleanCopy="true">
      <workingDirectory>$(WorkingDir)\$(ProjectName)</workingDirectory>
      <cb:if expr="$[Branch] == 'QA' || $[Branch] == 'UAT'">
        <trunkUrl>$(SVNLocation)/$(ProjectSvnReleaseLocation)/$[Branch]</trunkUrl>
      </cb:if>
      <cb:else>
         <trunkUrl>$(SVNLocation)/$(ProjectSvnDevLocation)</trunkUrl>            
      </cb:else>
      <cb:SVNCredentials/>
    </sourcecontrol>
    <labeller type="svnRevisionLabeller">
      <cb:LabelCommon />
      <cb:if expr="'$[Branch]'=='QA' || '$[Branch]'=='UAT'">
        <url>$(SVNLocation)/$(ProjectSvnReleaseLocation)/$[Branch]</url>
      </cb:if>
      <cb:else>
        <url>$(SVNLocation)/$(ProjectSvnDevLocation)</url>
      </cb:else>
      <cb:SVNCredentials/>
    </labeller>
    <tasks>
      <nant>
        <targetList>
          <target>$(ProjectName)</target>
        </targetList>
        <cb:NantCommon />
      </nant>
    </tasks>
    <cb:ParametersTemplate/>
  </cb:define>

私が調べて見つけたのは置換変数でしたが、このような設定でそれらをどのように利用できるか正確にはわかりません.

どんな援助でも大歓迎です。

4

3 に答える 3

2

最初の式の左側の変数は、次のように、2 番目の式と同様cb:ifに一重引用符で囲む必要があります。cb:if

  <cb:if expr="'$[Branch]' == 'QA' || '$[Branch]' == 'UAT'">
    <trunkUrl>$(SVNLocation)/$(ProjectSvnReleaseLocation)/$[Branch]</trunkUrl>
  </cb:if>
  <cb:else>
     <trunkUrl>$(SVNLocation)/$(ProjectSvnDevLocation)</trunkUrl>            
  </cb:else>
于 2013-04-12T00:57:24.213 に答える
1

私の謙虚な意見では、svn url をそのように変更しようとするのは良い考えではありません。動かせたとしても、他にも色々と壊れてしまう可能性があります。代わりに 3 つの異なるプロジェクトを使用し、共通のテンプレートを使用して残りの構成を共有します。

于 2012-10-10T12:30:52.640 に答える
1

ここで 2 つの概念を混同しています。cb:if はプリプロセッサの一部であり、プロジェクトが実行される前に構成を解析するときに使用されます。動的な値の値に応じて動作したい場合は、条件付きタスクを比較値条件で使用する必要があります。

http://www.cruisecontrolnet.org/projects/ccnet/wiki/Conditional_Task

http://www.cruisecontrolnet.org/projects/ccnet/wiki/Compare_Values_Condition

これは、タスク内でプロジェクトを実行するときに機能します。ただし、あなたの場合、ソース管理ブロック内の値を変更したいので、これは役に立ちません。これは、希望どおりにサポートされていません。ただし、パラメーターの値としてブランチ名を使用することもできます。

http://www.cruisecontrolnet.org/projects/ccnet/wiki/SelectParameter

于 2013-10-19T20:48:46.693 に答える