假设正在进行部署管道。 SVN标签和开发版本正在改变。那时开发人员正在进行他的改变。所以CI服务器有可能发布新的提交未经测试的生产更改或其他冲突发生。我该如何处理这种情况。我是否需要锁定整个主干,直到构建管道完成。有没有其他的工作。连续交付 - 处理中间svn提交
回答
如果我理解正确的话,您认为以下步骤
-
后提交,生成服务器会检查当前Trunk(假设修订版A)
- ,
- 进行构建,
- 执行一些测试,
- 标签的行李箱,如果试验成功
- 并将其部署到生产(仍然只如果测试成功)
“疯狂”的开发人员在第3步和第4步之间提交,因此创建了修订版B.现在假设构建服务器将再次检出最新修订版(这将是修订版B)。这种行为确实会造成一些麻烦。
但是,构建服务器应该根据特定修订执行所有步骤,这在常见设置中不是问题。例如。詹金斯通常在工作开始时有一个退房步骤。如果最后有一个标记步骤,您通常不会希望Jenkins盲目地标记当前主干(导致您描述的问题),而是标记Jenkins工作区中签出的修订。
此外,请考虑在任何部署自动部署到生产之前,应至少有一些手动审批步骤。据我所知,这通常是在连续交付的情况下提及的。
持续交付的关键是恕我直言,你可以在任何时候按下按钮来部署当前版本的源代码。恕我直言,这并不意味着每个提交应该自动部署。
我们可以用两种方式进行标记。 1.复制树干:例如:svn copy http://mydomain.com/myproject/trunk http://mydomain.com/myproject/tags/1.0.0。 2.复制 – user2903314
我们可以用两种方式标记。 1.副本主干:例如:svn副本http://mydomain.com/myproject/trunk http://mydomain.com/myproject/tags/1.0.0 2.复制本地工作副本,例如:svn副本。 http://mydomain.com/myproject/tags/1.0.0 因此,在CI服务器内部,我们应该始终使用用于构建和测试的检出副本进行标记。我对吗? – user2903314
是的,这将是去恕我直言的方式。 –
- 1. SVN提交的批处理
- 2. 连续部署和交付
- 3. SVN - 处理正在提交的文件
- 4. SOA中的持续交付
- 5. 使用木偶实现连续交付
- 6. 通用连续交付管道
- 7. 连续部署/交付和安全
- 8. 连续提交libcURL(C/C++)
- 9. 处理POST提交
- 10. Jenkins提交SVN
- 11. 交付与交付之间的差异!
- 12. 弹出批处理提交间隔外的事务提交
- 13. 如何设置连续建立在svn提交上?
- 14. Openstack + Chef + Jenkins持续交付
- 15. Gitlab持续交付选项
- 16. Jenkins + Virtualbox持续交付
- 17. 持续交付使用Grails
- 18. Fastlane的持续交付
- 19. svn分支提交 - 实验提交
- 20. 提交svn unstages最后一次提交?
- 21. 问题SVN提交
- 22. SVN提交问题
- 23. Svn提交在PHP
- 24. svn提交错误
- 25. SVN提交与Eclipse
- 26. svn提交消息
- 27. 提交项目SVN
- 28. SVN提交问题
- 29. SVN提交错误
- 30. Svn提交问题
“CI服务器发布新的提交未经测试的生产更改” - 呃,什么? –
假设CI服务器将开始部署管道的最后一步,这是将trunk中的源代码标记为特定版本,然后提交trunk以将当前开发版本更改为下一个快照版本的过程。就在这一步之前,一个疯狂的开发人员将他的更改提交给主干。因此,如果ci服务器在提交后立即标记trunk,它也会标记这些更改,这在发布的二进制文件中不存在。我是否成功解释了这种情况? – user2903314
在我看来,CI服务器不应该部署到生产环境。 –