代码之家  ›  专栏  ›  技术社区  ›  andersoj

使用Hudson+Ant+Subversion的自动发布

  •  3
  • andersoj  · 技术社区  · 15 年前

    1. 释放线的分支。一旦我们的开发线稳定下来,我们就要分店了。因为我们有低密度、高需求的用户,在正式发布之后经常会有一些活动,导致在发布线开始时有一点停滞不前的开发(我们不想为此而阻止主线开发),所以在方便的时候进行分支的实践,然后允许一个稳定的窗口(几小时到一两天)是有意义的。(这是在subversion中完成的;通常我们在分支之前标记开发版本,然后分支,然后进行并行开发)

    2. 从树枝上剪下来。目前涉及

      1. 把发行号放在它们所属的地方有点“修饰”。
      2. 签入
      3. 标签
      4. 出口
      5. 一点“fixup”将版本号返回到“devel/snapshot”。
      6. 签入

    • 从Hudson执行一个分支操作,该操作在给定新的发布分支名称的情况下对树进行分支,并生成一个新的Hudson作业,为该分支创建一个新的连续构建行。(它接近现有的主干配置的副本,但必须替换一些工作区名称和事物……)

    • 逻辑属于何处与Subversion交互?(可以想象,可能在ant脚本中;可能是单独的脚本;Hudson/plugins似乎也提供了一些这种逻辑?)

    • 当Hudson/subsidiary进程以写模式与repo对话时,对其用户/权限有何想法?

    • 那么第二阶段呢,上面的问题也适用,我能不能用这个发布插件来自动化逻辑呢?

    编辑以添加: 我理解并期待“你考虑过马文吗?”响应。。。我很感激,而且我理解Maven可能是正确的长期解决方案,但是构建系统的转换以及迁移到Maven的精确约束和教育技术人员的所有sturm和drang在短期内是不可行的。大概有办法用蚂蚁和一点肘油。。。

    3 回复  |  直到 15 年前
        1
  •  1
  •   Gary    15 年前

    短期蚁群算法

    read of this article that shows how to use SVNAnt .

    长期理想解

    正如@Peter Lawray提到的,Maven是你在这里的朋友。具体来看一下发布插件,它将管理用项目的“黄金版本”标记Subversion存储库的过程。从本质上说,您执行一个完整的构建(包括功能测试,如果有)来验证您的工件,然后Maven标记您的Subversion repo,最后它运行在您的project pom.xml文件上,并将它们重新版本到下一个级别(作为快照)。

    就构建过程而言,Hudson与Maven合作愉快,并将按照Maven pom.xml中指定的顺序构建和测试工件(jar、WARs、EARs等)。

    如果您愿意的话,您可以绑定SeleniumRC并提供一个多浏览器自动功能测试环境。Maven处理这一切,从构建到将工件部署到构建服务器,再到随后的功能测试,最后由发布过程签署。

    我已经 blogged a little about this 如果你感兴趣的话。

        2
  •  1
  •   Peter Schuetze    15 年前

    我认为您应该创建一些脚本来完成所有工作(ant和/或batch/shell脚本)。看看 Batch Task plugin . 这允许您在作业的当前工作区上运行版本。你的剧本是为了完成所有的工作。您可以使用 remote api . 如果环境变量(如job name)不可用,则可能需要硬编码作业名称(或在工作区的文件中生成期间记录它们)。最后,您将拥有一个更新的主干(开发行)、一个新的发布行(在分支中)和一个在发布分支上运行所有CI的作业。

        3
  •  0
  •   Tom Anderson    15 年前

    作为构建的一部分,我不会进行分支和标记,而是手动完成。这是(又一次!)也许有一个哲学上的区别:我认为Hudson是一种获取某些代码行的当前状态并生成其工件的方法,而不是一种操纵代码行的工具。它像一个大编译器,但不像一个IDE。

    所以,我的过程看起来像(实际上,我们的过程看起来像):

    1. 在那一点上分支(称为release23_20101124)
    2. 编辑版本属性文件以添加版本号,并执行任何其他修复
    3. 入住分行
    4. 设置一个新的Hudson作业(通过复制一个模板作业)来构建一个版本,将其配置为从分支签出

    因此,建立一个新版本是一个开发人员/构建管理器的任务,但实际上构建这个版本是由Hudson完成的。

    建立一个版本确实需要手工操作,但是你不能称之为麻烦——标记、分支、编辑一些文件、提交、创建作业和更改其分支名称需要多长时间?