5

将 .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 的更改(生产)

6a。并非一切都好。6b。Jenkins 向开发人员发送通知,他的提交破坏了构建,我们回到第 2 步。

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

吉特:

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

SVN:

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

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

4

2 回答 2

4

您需要记住一些事情:

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

这意味着您可以对提交的代码进行代码审查,并在新的提交中修复任何问题。事实上,这实际上对 Subversion 有好处,因为 Subversion 为您提供了一个包含所有代码更改的漂亮修订号。这样,每个人都在同一个页面上。(“我们正在审查修订版 23,340”)。大多数代码审查都在寻找忘记检查空指针等问题。如果代码真的很糟糕,Subversion 可以很容易地完全逆转更改。

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

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

简化。删除最后三个步骤。进行代码审查并在同一存储库中修复代码。这意味着必须维护的存储库减少了 66%。硬件减少 66%。和,


您真正需要的只是一种跟踪代码审查的方法。您可以使用Crucible 之类的东西,但也可以使用 Jenkins。使用 Jenkins 跟踪更改有两种方法:

  • 为各个构建添加描述:操作简单,不需要额外的插件。描述灵活。您可以进入一个项目,查看所有构建的列表并查看描述。简单易行。
  • 升级的构建插件:其中有两种:一种是标准的,一种是简单的。

推广的构建简单插件......嗯......很简单。您在 Jenkins 配置页面中指定所有不同的提升级别,这就是所有构建将使用的。每个单独的构建只允许一个升级级别,并且这一切都是手动完成的。

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

  • 构建通过单元测试:构建完成并通过其单元测试时自动升级。可以向负责代码审查的 QA 人员发送一封电子邮件:
  • 代码审查完成。没有大问题:构建通常很好。也许有一些小问题,但这个构建可以用于部署到其他环境以进行进一步测试。
  • 代码审查已完成:发现重大问题:此版本存在重大问题,不应视为已准备好部署到另一个环境以进行进一步测试。
  • 开发人员修复了此构建中发现的问题:构建仍然很糟糕,但至少您知道开发人员声称可以处理此构建中的问题。
于 2012-11-30T18:29:51.967 回答
0

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

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

  1. Jenkins 开始单元测试。

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

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

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

于 2012-11-30T16:30:22.357 回答