Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/svn/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Svn 从subversion标记自动生成_Svn_Build Process_Build Automation_Build Management - Fatal编程技术网

Svn 从subversion标记自动生成

Svn 从subversion标记自动生成,svn,build-process,build-automation,build-management,Svn,Build Process,Build Automation,Build Management,我正在尝试自动化工程组的构建过程。作为自动化的一部分,我试图达到这样一个点,即应用符合模式的特定标记将启动一个自动化过程,该过程将执行以下操作: 查看源代码 从模板创建生成脚本 建设项目 我很确定我可以用subversion中的一个post钩子来实现这一点,但我正在尝试用subversion钩子以外的东西来实现这一点 监视subversion存储库中的标记目录以启动我的工作流是否有意义 有没有合适的工具可以帮你实现这一点(.NET如果可能的话会很好) 我写一个引擎来做这件事会更好吗 我的

我正在尝试自动化工程组的构建过程。作为自动化的一部分,我试图达到这样一个点,即应用符合模式的特定标记将启动一个自动化过程,该过程将执行以下操作:

  • 查看源代码
  • 从模板创建生成脚本
  • 建设项目
我很确定我可以用subversion中的一个post钩子来实现这一点,但我正在尝试用subversion钩子以外的东西来实现这一点

  • 监视subversion存储库中的标记目录以启动我的工作流是否有意义
  • 有没有合适的工具可以帮你实现这一点(.NET如果可能的话会很好)
  • 我写一个引擎来做这件事会更好吗
我的偏好:

  • 完成全部或部分功能的现有产品
  • 如果需要进行开发工作,最好使用.NET
  • 适用于Windows(我们有一个基于Linux的repo,但所有构建都在Windows上进行)

本网站上广告的商业产品正是出于此目的

您可能需要向SVN添加一个post钩子来触发构建启动,除非您希望它按照时间表运行。

我正在使用(和)进行自动构建。它会自动检查subversion存储库中的更改,并(如果有)获取最新的源代码版本并启动构建

我不确定现有的任务是否能够完全满足您的需要,但您可以将其作为一个起点,如果需要,可以使用任务扩展它以满足您的特殊需要(它是用.NET开发的)。

可以轻松地从subversion存储库自动生成


它可以监视存储库(Svn和其他几种类型),并使用各种工具启动自动构建。(NAnt、MSBuild等)

听起来您想要的是一个持续集成构建引擎,比如CruiseControl或Hudson(Hudson是用java编写的,但在windows中很容易使用)

现在,您可以伪造这些工具的构建脚本来查看tags目录,但这有点不符合实际,因为它们打算查看特定位置并在该位置构建项目。如果您查看整个标记目录,您很容易就会发现所有标记都将在构建机器上签出,并且您需要一个顶级脚本来决定要构建哪个标记

为了满足您的需要,构建引擎可以监视特定位置(比如“/branchs/release”)。如果您随后合并到该分支中,Hudson将自动构建项目,归档工件,并在成功后为您创建标记(请参阅 Subversion标记插件)

我不喜欢从post-commit钩子做这种事情,因为这会使提交阶段花费太长时间。然而,TeamCity是一个源代码管理系统,它有一个功能,可以在提交时不阻碍您


我建议您这样做。

正如其他人所说,您需要一个持续集成服务器(CruiseControl、CruiseControl.Net、Hudson等)。虽然您可以使用构建脚本和提交钩子来实现您描述的功能,但最终您会发现您重新发明了轮子(持续集成服务器)。不需要,有免费的解决方案可用于此目的

该过程的工作原理与上面描述的略有不同。 生成服务器将:

  • 检测新提交
  • 签出源代码
  • 运行构建脚本
  • 标记成功构建
  • 提交触发流程并创建标记,而不是触发流程的标记。服务器通过监视svn存储库而不是提交钩子来实现这一点

    查看CruiseControl.Net关于此主题的文档,特别是选项tagOnSuccess和tagBaseUrl。哈德逊和CruiseControl应该有类似的选择


    我用哈德逊做了这件事。在常规subversion签出槽中,我有一个用于主干的签出:

    然后,作为第一个构建操作,我有一个“execute shell”,在该shell中使用svn开关更改为存储库中的最新标记:

    svn开关'svn ls |尾部-n 1'干式

    下一个构建步骤是maven'clean install'命令,该命令使用标记版本中的代码启动构建

    我还没有弄明白如何让哈德逊从一个最新的标签版本开始,而不是必须做开关,但开关工作。然后,可以在更新标记目录时触发

    它是自动化的。。。有点混乱,但它是有效的

    该开关应包括第二个svn命令的反勾号,但必须使用“因为反勾号未显示在此处”。

    我喜欢-易于设置,并与svn一起开箱即用

    您可以将其配置为在每次提交的基础上构建

    我下载了它,并在一天内开始构建。它经历了很多调整,但我会向任何人推荐它

    我也用过巡航控制系统,但不太满意。除了跨平台问题外,我没有其他具体原因

    编辑


    我最近在我的hudson build服务器上添加了一个监听google/gmail jabber聊天的任务。我可以使用这种机制将“常规”构建“升级”为发布构建。我刚刚建立了一个新的工作,它执行必要的步骤来将私有构建提升/发布到候选发布版本中

    我也推荐哈德逊。我想做一些类似的事情,创建一个标签,然后开始构建。取而代之的是,我选择在哈德逊使用这个插件:


    用它来驱动标签的创建和明确的发布版本。

    是的,我想你看到了我所追求的是真正自动化发布机制的工作方式。如果我只是简单介绍一下模型,这意味着所有的开发人员