【问题标题】:Continuous Delivery- Handling Inbetween svn commits [closed]持续交付 - 处理 svn 提交之间的处理 [关闭]
【发布时间】:2013-10-22 16:10:30
【问题描述】:

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

【问题讨论】:

  • “CI 服务器将新提交的未经测试的更改发布到生产环境” - 呃,什么?
  • 假设CI服务器要启动Deployment pipeline的最后一步,即将trunk中的源代码标记为特定版本,然后提交trunk将当前开发版本更改为next快照版本。就在这一步之前,一个疯狂的开发人员将他的更改提交到主干。因此,如果 ci 服务器在此提交之后标记主干,它也会标记这些更改,这在已发布的二进制文件中不存在。我成功地解释了这种情况吗?
  • 在我看来,CI 服务器不应该部署到生产环境中。

标签: continuous-integration continuous-deployment continuous-delivery


【解决方案1】:

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

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

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

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

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

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

【讨论】:

猜你喜欢
  • 2015-12-13
  • 1970-01-01
  • 2012-07-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-01-02
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多