TeamCity从版本文件中读取和更新版本号

Kin*_*ger 7 .net teamcity version-numbering

我们正在使用TeamCity作为CI服务器,我们一直在考虑如何实现一种安全版本化版本的方法(即人为错误的机会最小),但这也需要尽可能少的努力.到目前为止,以下似乎是最合乎逻辑的:

  1. 创建版本文件(或使用assemblyinfo.cs).版本信息将采用格式....此文件将被检入我的VCS.
  2. 运行TeamCity构建
  3. TeamCity从步骤1读取版本文件,挑选每个单独的数字并设置相应的TeamCity构建参数(因此我可以在以后使用它们来创建nuget包和标签)
  4. TeamCity自动递增最终的"构建计数"值.
  5. TeamCity将新版本信息保存回版本文件(使用更新的"构建计数")
  6. 然后,TeamCity将运行其余的构建步骤,构建文件,运行单元测试,设置正确的程序集版本等.
  7. TeamCity最终将文件检入VCS

我们认为以这种方式做事的好处是我们需要修复旧版本,然后版本号将是正确的,TeamCity可以简单地使用旧版本文件,并像往常一样递增构建计数.这确实假设我们正在更新我们的主要/次要/补丁版本.这将很好地与TeamCity 7.1即将发布的功能很好地配合使用,该功能允许您通过自定义构建对话框选择要构建的分支.

从我到目前为止已经阅读的内容来看,这些操作应该可以在TeamCity中进行,但是我们正在寻找最简单的根本来解决这个问题,因为我们只是一个两人装,我们负担不起投资大成为Nant或powershell专家的时间,但却发现它可能无法满足我们的需求.

所以我想总结一下我的问题如下:

  1. 我提议的可能吗?
  2. 如果是,那么考虑到我对Nant,powershell等的有限经验,最好的工具是什么(对于那些命令行和脚本经验扩展到简单的DOS操作和一些VBScript的人来说,这是最快的学习方法)

任何帮助是极大的赞赏.

Fed*_*lev 9

对于你的第一个问题:是的,这是可能的:

  1. 将.git(.svn,.hg等)目录添加到VCS规则
  2. 使用您喜欢的脚本语言在teamcity(命令行运行器)中的构建脚本中读取版本号并对其进行修改.
  3. 通过交互协议设置内部版本号
  4. 使用您喜欢的脚本语言更新版本文件中的内部版本号
  5. 执行构建步骤
  6. 执行提交和推送,你可以因为你在最后一步中已经在build dir中有.git(.svn,.hg等)目录

抱歉,但我无法回答您的第二个问题,因为我不知道任何适合Windows的工具.在linux上我会使用bash.