Jenkins + SVN + .NET项目+代码审查。最好的方法吗?

时间:2012-11-29 21:32:22

标签: .net git svn msbuild jenkins

将.NET项目与Jenkins和SVN集成的最佳方法是什么(我不知道现在是否有机会切换到git)并且能够在构建之后和生产之前检查代码。

我想要这样的事情:

  1. 开发人员检出存储库。
  2. 开发人员实现了一些东西。
  3. 开发人员提交对存储库A(SVN)的更改
  4. Jenkins监控存储库A(SVN)
  5. Jenkins开始构建。
  6. Jenkins开始进行单元测试。
  7. 一切都好。
  8. Jenkins提交对存储库B的更改(审核存储库)
  9. QA人评论代码。
  10. QA人员提交对存储库C(生产)的更改
  11. 6a上。不是一切都好。 6B。 Jenkins向开发人员发送通知说他的提交破坏了构建,我们回到第2步。

    我知道如何执行第1-6步。或多或少。我知道我可以使用MSBuild构建所有内容,所以这应该不难,但我不确切知道如何配置步骤6-9,

    GIT:

    我认为使用git会更容易。我看到在构建后的操作中有Git Publisher,我可以将更改推送到分支 - “review-branch”或类似的东西,并向审阅者发送通知。他们将拉出存储库,一切都会很棒。嗯也许不是推动审查分支,詹金斯应该创建对该分支的拉取请求。但正如我所说,这将是git的场景。我在这里写了,因为对我来说git在这里是更好的选择,但也许不可能。我只是想知道,如果我们谈论git,我是不是错过了什么。

    SVN:

    我不知道该怎么做。 Jenkins是否有内置的东西来处理第二个SVN存储库的“推送”?如何将代码提交到存储库B?

    修改: 什么是最好的方法? - (GIT)Jenkins创建拉取请求 - 如果可能的话 - (GIT)Jenkins推动第二次审核 - 分支并通过电子邮件发送通知或在某些问题跟踪器上创建一些门票(Redmine / Jira) - (SVN)Jenkins承诺审查存储库并发送电子邮件或创建票证。 - 或者最好将所有内容与ReviewBoard / Gerrit或类似内容集成。现在我从来没有使用过这样的软件,而且我读到Gerrit有点麻烦。

2 个答案:

答案 0 :(得分:4)

你需要记住一些事情:

  

在版本控制系统中,一切都是可逆的

这意味着您可以对已提交的代码进行代码审查,并修复新提交中的任何问题。实际上,这实际上与Subversion有关,因为Subversion为您提供了一个包含所有代码更改的良好修订版本号。每个人都以这种方式在同一页面上。 (“我们正在审核修订版23,340”)。大多数代码评论都在寻找忘记检查空指针等问题。如果代码非常糟糕,Subversion可以很容易地完全扭转变化。

詹金斯会立即告诉你构建是否糟糕,我们的政策是开发人员有10分钟时间来解决问题,或者退出他们的更改。 (90%的时间,他们退出了他们的变化)。我们有系统设置,因此开发人员和Jenkins都使用相同的构建机制。这允许开发人员在提交更改之前测试构建并运行单元测试。

这就是大多数版本控制系统没有搁置的原因,并且您没有看到三组存储库和大多数地方。这不是你的公寓。你的妈妈不会来看看你的代码历史。它不一定要整洁。让它反映正在发生的事情。

简化。删除最后三个步骤。您的代码是否在同一存储库中检查并修复代码。这意味着必须维护的存储库减少66%。硬件减少66%。而且,


您真正需要的是跟踪代码审核的方法。您可以使用类似Crucible的内容,但也可以使用Jenkins。有两种方法可以使用Jenkins跟踪更改:

  • 向各个版本添加说明:操作简单,无需其他插件。描述很灵活。您可以进入项目,查看所有构建的列表并查看说明。简单易行。
  • 推广构建插件:其中有两个:一个是标准插件,一个是简单

Promoted Builds Simple Plugin ......好......很简单。您可以在Jenkins配置页面中指定所有各种促销级别,这就是所有构建将使用的内容。每个单独的构建只允许一个促销级别,并且都是手动完成的。

标准Promoted Build Plugin是一项更多的工作,但它也更强大。它允许每个Jenkins作业都有自己的构建升级方案。促销可以是手动的,也可以是自动的。当构建获得提升时,它可以产生其他操作,例如发送电子邮件,部署到服务器等。此外,您可以显示多个促销。想象一下以下促销级别:

  • 构建通过单元测试:构建完成后自动升级并通过单元测试。可以将电子邮件发送给负责代码审查的QA负责人:
  • 代码审核完成。没有重大问题:构建通常很好。可能是一些小问题,但是这个版本可以用于部署到其他环境以进行进一步测试。
  • 代码审核已完成:发现主要问题:此版本存在重大问题,不应考虑将其部署到其他环境中进行进一步测试。
  • 开发人员修复了此版本中发现的问题:构建仍然很糟糕,但至少您知道开发人员声称要处理此版本中的问题。

答案 1 :(得分:0)

[回答“可以做到的”部分]

是的,詹金斯可以做你所描述的。我已经设置了使用SVN为存储库使用所有需要的部分的作业(但不是您的程序)。我不确定GIT。

  
      
  1. Jenkins开始进行单元测试。
  2.   

添加构建步骤以执行Windows批处理文件。

  
      
  1. Jenkins提交对存储库B的更改(审核存储库)
  2.   

如果使用SVN,请查看Jenkins SVN Publisher Plugin。对于GIT来说,它似乎可以用Git Plugin,但有一点警告:“安装插件本身就像一个魅力,但配置系统在Windows下正常工作可能是一个棘手的问题。看到你可能遇到的问题。“