我们的开发人员应该如何使用Jenkins测试python SVN分支



我正在与7名开发人员一起进行一个web项目。我设置了一个测试箱(debian),这样我们就可以在将新代码传递到暂存之前对其进行测试。

在测试版上,我设置了Jenkins,并希望自动化合并/测试过程。我们还有一个测试套件,我想以某种方式与之搭配。

我应该如何使用SVN/Jenkins测试和运行python web项目?

我正在努力制定一个好的工作流程。现在每个开发人员都在一个功能分支上工作,我在分支中运行代码,如果看起来不错,我们将其合并

我很想让开发人员登录到测试版jenkins,并告诉它从他们的功能分支构建。以下是我对詹金斯的计划:

  1. 确保功能分支已从主干重新建立基础
  2. 确保beta分支与trunk相同(覆盖任何合并的功能分支)
  3. 将功能分支合并到测试分支
  4. 杀死正在运行的服务器
  5. 启动服务器nohup python app.py &
  6. 运行测试套件python test.py
  7. 将测试数据输出到Jenkins中的开发人员视图
  8. 如果任何测试失败,请恢复到合并分支之前的状态

我不知道如何处理合并冲突。此外,上述情况可能是糟糕和错误的。任何建议都将不胜感激!

这个问题有点太大了,无法在简单的帖子中回答,因此我将尝试从我个人的角度给出一些提示和参考:

一些快速提示:

  • 我喜欢将开发人员分为多个分支的想法,但我会在功能分支上进行测试,只有在功能通过测试时才能合并到测试分支,这样在测试之前就不会进入测试分支
  • 我会把集成步骤放到Jenkins之外的脚本中。将其作为源代码的一部分。通过这种方式,您可以在Jenkins之外快速测试脚本本身
  • 使用您最熟悉的构建系统或脚本语言,大多数步骤都可以使用任何编程语言轻松完成
  • 使脚本返回成功或失败,这样Jenkins就可以将构建标记为失败
  • 对于合并问题,您有两种可能性
    • 在开发人员提交分支进行集成之前,要求手动重新建立分支的基础,签入脚本,如果需要重新建立基础,则使其失败。这样就不会发生合并错误,如果分支没有重新建立基础,那么构建就会失败
    • 如果您更倾向于允许非基于基础的合并,则需要使基于合并的构建错误失败,以便开发人员可以手动解决问题(通过在再次提交之前重新建立其分支的基础)

以下是我发现在这个领域有用的一些书:

  • 《谷歌如何测试软件》,作者:James A.Whittaker,Jason Arbon,Jeff Carollo
  • 持续交付:通过构建、测试和部署自动化实现可靠的软件发布

通过评论让我知道你想要什么其他内容。

有一些东西:

  • 正如barracel所建议的那样——使用一些DVCS会更方便——这样的git可以更好地在多个分支中工作
  • IMHO合并过程是你不想做的事情automatic(我写这篇文章时提到"如何处理合并冲突")。在我过去工作的工作流中,合并总是由人工处理,有时还需要某种代码审查(我不确定你所说的"如果它看起来不错"是什么意思),你是只验证功能,还是验证它是如何实现的
  • 除了单元测试之外,还可以进行一些功能测试(Selenium),以及在每次合并到beta分支后启动的性能测试(jmeter或tsung)。这样,您还可以跟踪应用程序如何随着开发而变化(并可能及时做出反应),例如,如果您在登录页面时注意到性能下降
  • 这是一件微不足道的事情,但在处理单独的分支时,要确保信息的流动,这样你们就可以避免在不同的分支中开发相同的部分,或者在使用的解决方案/模式/库中变得矛盾。可能有帮助的是-发送失败的电子邮件(给失败的开发人员)和成功合并到主干网后的每个人-这样每个人都会得到通知(但要确保你没有向开发人员发送垃圾邮件-他们会停止阅读;)
  • 如果你真的有很多合并冲突——也许是时候重新考虑流量并尽量减少分支数量了,有趣的阅读http://lostechies.com/derickbailey/2010/02/24/branching-strategies-the-cost-of-branching-and-merging/或抽象分支http://paulhammant.com/blog/branch_by_abstraction.html/
  • 确保开发人员经常将主干线拉到分支并进行合并——这也有助于减少冲突,甚至
  • 为什么不在从主干网合并后直接在开发人员分支上进行测试?这种合并后的代码应该很容易再次合并回主干中

最新更新