繁体   English   中英

使用CCNET版本1.8.2中的条件参数来更改svn位置

[英]Using Conditional Parameters in CCNET version 1.8.2 to change svn locations

我正在尝试为我们的应用程序设置构建服务器。 在进行强制构建时,我想使用参数来确定要构建的内容。 下面我的设置将工作DEV主要是因为if语句,这是设置的片段。 无论我选择QA还是UAT,它总是假的。 以前有没有人试过用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>

我查找并找到的一件事是替换变量,但我不确定如何将它们用于这样的设置。

任何帮助将不胜感激。

第一个cb:if的左侧变量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>

在我看来,尝试改变这样的svn url并不是一个好主意。 即使你让它工作,其他各种事情也许会破裂。 我会选择三个不同的项目,使用通用模板来共享其余的配置。

你在这里混淆了两个概念。 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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM