2016-01-21 77 views
0

我们使用Cruise Control v1.8.5.我们必须在下一个场景:从git仓库如何设置标签前缀的应用程序版本与CruiseControl.NET

  • 结账源代码
  • 运行一些脚本来构建项目(如故宫安装& &科尔多瓦干净,科尔多瓦建立,还缩小了一些CSS文件,编译打字稿...)

现在我们要添加标签成功构建。因此,我发现CruiseControl的具有贴标机的选择,所以我说:

<cb:define name="Mylabeller"> 
    <labeller type="defaultlabeller"> 
     <initialBuildLabel>1</initialBuildLabel> 
     <labelFormat>0</labelFormat> 
     <incrementOnFailure>true</incrementOnFailure> 
     <labelPrefixFile>X:\BuildFiles\myProject\version.txt</labelPrefixFile> 
     <labelPrefixFileSearchPattern>\d\.\d\.\d\.</labelPrefixFileSearchPattern> 
    </labeller> 
</cb:define> 

但问题是,在此之前的源代码是从库中检索(GIT)做到这一点。我从我的项目中读取版本,然后使用正则表达式CruiseControl读取版本并输出如下内容:1.0.3.buildNumber。

如何在从存储库中检索源代码后设置/更新标签前缀版本。它在结账前读取旧的。我还阅读了关于动态变量,他们可以以某种方式设置或什么?

追加项目的XML:

<cb:scope ProjDirName="myProject"> 
     <project name="myProject" queue="Daily" queuePriority="30"> 
      <workingDirectory>D:\BuildFiles\$(ProjDirName)\Working</workingDirectory> 
      <artifactDirectory>D:\BuildFiles\$(ProjDirName)\Artifacts</artifactDirectory> 
      <cb:sourcecontrol module="Modul1" TagOnSuccess="false" Branch="$(BranchDevelop)" /> 
      <tasks>   
       <cb:NpmInstall /> 
       <cb:Build /> 
      </tasks> 
      <cb:Mylabeller /> 
      <cb:commonall />     
     </project> 
    </cb:scope> 
+0

你在做什么,在标签中嵌入git散列? –

+0

好吧,应用程序版本写在文件config.xml中。我想在巡航控制结帐后读取该值,即' broadband

回答

0

想通CruiseControl的设置当项目构建启动下一个构建版本和前阅读项目的XML(结账,任务...)。

CruiseControl的项目生成日志:

<parameters> 
<parameter name="$CCNetArtifactDirectory" value="D:\BuildFiles\MyProject\Artifacts" /> 
<parameter name="$CCNetBuildCondition" value="ForceBuild" /> 
<parameter name="$CCNetBuildDate" value="2016-01-25" /> 
<parameter name="$CCNetBuildId" value="9d8234720e7342a3aa636aacc120eb13" /> 
<parameter name="$CCNetBuildTime" value="13:49:42" /> 
<parameter name="$CCNetFailureTasks" value="System.Collections.ArrayList" /> 
<parameter name="$CCNetFailureUsers" value="System.Collections.ArrayList" /> 
<parameter name="$CCNetIntegrationStatus" value="Unknown" /> 
<parameter name="$CCNetLabel" value="1.0.88" /> 
<parameter name="$CCNetLastIntegrationStatus" value="Failure" /> 
<parameter name="$CCNetListenerFile" value="D:\BuildFiles\MyProject\Artifacts\MyProject_ListenFile.xml" /> 
<parameter name="$CCNetModifyingUsers" value="System.Collections.ArrayList" /> 
<parameter name="$CCNetNumericLabel" value="88" /> 
<parameter name="$CCNetProject" value="MyProject" /> 
<parameter name="$CCNetProjectUrl" value="http://BUILDer/ccnet" /> 
<parameter name="$CCNetRequestSource" value="machineName1" /> 
<parameter name="$CCNetUser" value="user1" /> 
<parameter name="$CCNetWorkingDirectory" value="D:\BuildFiles\MyProject\Working" /> 
<parameter name="$LastChangeNumber" value="96ece86d55f83c8eb129cbfeb01724a3d37bb18a" /> 

而且我是有道理的,持续集成决定应用程序版本例如major.minor.build代替每个提交都指定版本。

解决方案:

<cb:scope ProjDirName="myProject"> 
     <project name="myProject" queue="Daily" queuePriority="30"> 
      <workingDirectory>D:\BuildFiles\$(ProjDirName)\Working</workingDirectory> 
      <artifactDirectory>D:\BuildFiles\$(ProjDirName)\Artifacts</artifactDirectory> 
      <cb:sourceControlMyProject Branch="develop"/> 
      <cb:dailytrigger /> 
      <tasks> 
       <cb:NpmInstall /> 
       <cb:BuildRelease /> 
       <cb:PublishAfter /> 
      </tasks> 
      <publishers> 
       <cb:commonpublish/> 
      </publishers> 

      <cb:MyLabeller LabelPrefix="1.0." /> <!-- version is fixed --> 
      <cb:commonall />  

     </project> 
    </cb:scope> 

而且贴标机:

<cb:define name="MyLabeller"> 
    <labeller type="defaultlabeller"> 
    <initialBuildLabel>1</initialBuildLabel> 
    <prefix>$(LabelPrefix)</prefix> 
    <incrementOnFailure>true</incrementOnFailure> 
    <labelFormat>0</labelFormat> 
    </labeller> 
</cb:define> 

目前这种设置就可以了。如果我们要开发版本1.1,则必须更改上部设置。主要的是要进行版本控制,例如1.0。 + cruiseControl_next_build_number。

相关问题