
[英]CCNet triggers build, but succeeds even if I check in bad code to 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.