是否有任何工具可以使git构建每个提交到单独存储库中的分支?

Way*_*yne 16 git build-automation continuous-integration build-process unit-testing

需要符合以下规范的git工具.一个人已经存在吗?如果没有,我将创建一个脚本并使其在GitHub上可供其他人使用或贡献.有没有一种完全不同的更好的方法来解决构建/测试每个提交到git存储库中的分支的需要?不仅是最新的,而且每个人都回到了一个起点.

背景:我们的开发环境使用独立的持续集成服务器,非常棒.但是,仍然需要在每个开发人员的PC上进行本地完全构建,以确保在推送到CI服务器时提交不会"破坏构建".不幸的是,通过自动单元测试,这些构建强制开发人员每次等待10或15分钟进行构建.

为了解决这个问题,我们在每台开发者PC上设置了一个"镜像"git存储库.所以我们在主存储库中开发,但任何时候都需要本地完整构建.我们在镜像存储库中运行几个命令来获取,检出我们想要的提交和构建.它的工作非常可爱,所以我们可以继续在主要工作中进行并行构建.

现在只有一个主要问题.我们希望确保每个提交都构建并通过测试.但是我们经常忙着疏忽建立几个新的提交.然后,如果构建失败,则必须进行二等分或手动构建每个临时提交以确定哪个中断.

此工具的要求:

  1. 该工具将查看另一个repo,默认情况下为origin,获取并将分支中的所有提交与2个提交列表进行比较.一个列表必须保留成功构建的提交,其他列表提交失败.

  2. 它标识任何列表中尚未提交的提交,并开始按照提交的顺序在循环中构建它们.它在第一个失败时停止.

  3. 该工具在尝试构建每个提交后,将每个提交适当地添加到成功或失败的列表中.

  4. 该工具将忽略成功列表中最早提交之前的任何"遗留"提交.这个逻辑使得下一个点的起点成为可能.

  5. 初始点.该工具构建一个特定的提交,如果成功,它将被添加到成功列表中.如果它是成功列表中最早的提交,它将成为"起点",以便在此之前的任何提交都不会检查构建.

  6. 只有线性树支持?就像bisect一样,这个工具最适用于提交树,至少从它的起点开始,线性没有任何合并.也就是说,它应该是一个完全通过rebase和快进提交构建和更新的树.

  7. 如果它在分支中的一次提交失败,它将停止而不构建在该分支之后的其余部分.相反,如果只是转移到另一个分支,如果有的话.

  8. 默认情况下,该工具必须执行一次这些步骤,但允许参数循环使用选项来设置循环之间的秒数.像Hudson或CruiseControl这样的其他工具可以做更多花哨的调度选项.

该工具必须具有良好的默认值,但允许可选控制.

  1. 哪个回购?默认情况下来源.

  2. 哪个分支?所有这些都是默认的.

  3. 什么工具?默认情况下,由存储库的根文件夹中名为"buildtest","buildtest.sh""buildtest.cmd"或"buildtest.exe"的用户提供的可执行文件.

  4. 循环延迟?默认情况下运行一次,选项在迭代之间经过几秒后循环.

Dus*_*tin 13

我写了一个工具,我称之为git test-sequence一段时间就是这样做的.

我正在考虑写博客,因为一位朋友告诉我这本周为他节省了大量工作.