如何在Cruise控制配置文件中更改现有变量的值

时间:2013-06-19 07:28:27

标签: cruisecontrol.net

我在巡航控制配置文件中创建了一个变量

我希望稍后在执行期间更改巡航控制中此变量的值。基本上我想要的是在执行task1时,'MyVariable'的值应该是'val1'并且在执行task2时,值应该是'val2'。

我想要的另一件事是,ui不应该进行手动交互或手动分配,应该自动更改值。

有人可以帮助我实现这个目标吗?任何建议/输入都会有很大帮助。提前谢谢。

2 个答案:

答案 0 :(得分:4)

我正在使用以下方法编译一个具有不同参数的MSBuild(ccnet 1.8):

<cb:define name="Build">
  <msbuild>
     <some_parameter>$(MyVariable)</some_parameter>
     <other_parameter>parameter_value</other_parameter>
  </msbuild>
</cb:define>

然后在任务部分:

<cb:Build MyVariable="val1" />
<cb:Build MyVariable="val2" />

答案 1 :(得分:0)

如果MyVariable的那些值是常数(我的意思是对于给定的任务总是相同的)那么我会使用preprocessor。然后,您可以使用cb:scope。

覆盖该值

例如,这是我对项目配置的处理方式:

<cb:scope 
    Project.Name = "ProjectName - Feedback - Integration tests"
    Project.ShortName = "project-name-feedback-quick"
    Project.Category = "Project Name - Feedback"
    Project.Description =  "Run integration tests"
>

    <project name="$(Project.Name)" description="$(Project.Description)">               
        <artifactDirectory>$(CIRootFolderPath)\$(Project.ShortName)\Artifacts</artifactDirectory>
        <workingDirectory>$(CIRootFolderPath)\$(Project.ShortName)\WorkingDir</workingDirectory>
        <state type="state" directory="$(CIRootFolderPath)\$(Project.ShortName)" />

因此,您可以使用<task>块围绕每个<cb:scope>,并在那里重新定义MyVariable的值。