-1

假设一个部署管道正在进行中。SVN 标记和开发版本更改正在进行中。那时,开发人员正在提交他的更改。因此 CI 服务器有可能将新提交的未经测试的更改发布到生产环境或发生其他一些冲突。我该如何处理这种情况。在构建管道完成之前,我是否需要锁定整个主干。有没有其他解决方法。

4

1 回答 1

1

如果我理解正确,您假设以下步骤

  1. 提交后,构建服务器将检查当前主干(假设是修订版 A),
  2. 执行构建,
  3. 执行一些测试,
  4. 如果测试成功,标记树干
  5. 并部署到生产环境(仍然只有在测试成功的情况下)

“疯狂”的开发人员在第 3 步和第 4 步之间提交,因此创建了修订版 B。现在您假设构建服务器将再次检查最新的修订版(即修订版 B)。这种行为确实会引起一些麻烦。

但是,构建服务器应该根据特定版本执行所有步骤,这在常见设置中不是问题。例如,Jenkins 通常在工作开始时有一个结帐步骤。如果最后有标记步骤,您通常不希望 Jenkins 盲目地标记当前主干(导致您描述的问题),而是标记在 Jenkins 工作区中签出的修订。

此外,请考虑在任何东西自动部署到生产之前至少应该有一些手动批准步骤。据我所知,这通常是在持续交付的上下文中提到的。

持续交付的关键是恕我直言,您可以随时按下按钮部署当前版本的源代码。恕我直言,这并不意味着每个提交都应该自动部署。

于 2013-10-22T07:21:43.470 回答