这是对“如何避免在测试环境中持续积分引起的不稳定性?”问题的回答的部分引文: >

我的问题:冻结环境的示例实现是什么?即在技​​术上强制执行什么操作,使任何人(除非得到授权用户(如发行经理)的允许)都不能在这种冻结的环境中进行任何更改。

说明:


我不是在谈论(例如)在银行进行年终处理期间所谓的“冻结期”。这就是说不允许对生产环境进行任何更改(重复进行任何更改),以减少可能影响年终处理的新更改/修订的引入。
假定允许批准的用户/ apply仍然进行更改(例如,在我的示例中为发布管理器),仅在特殊情况下才进行更改。例如,在测试过程中遇到高严重性问题的情况,将修复推迟到下一个发行版是不可行的(因为如果不使用此修复程序就激活该发行版,则可能会产生生产风险)。
在测试期间暂停任何自动更新。关键是:避免在其他团队仍在依赖应用程序A的X版本中测试应用程序B的同时,将其他人将应用程序A升级到版本Y。这可能意味着要有警惕,避免测试团队要求对依赖项进行更新测试。


#1 楼

关于这个问题,我的答案是一个非常昂贵的测试环境(例如大型机或大型电信设备),预计将由多个用户共享以进行多个测试,甚至同时进行。

在许多情况下,此类设备具有软件管理系统,该系统除其他外,负责控制软件(未安装)的安装/升级/降级/等。哪些应该基于某种或多或少的可编程策略来阻止此类操作(如果我正确理解这个问题,等同于冻结环境)的某种机制。在这种情况下,应使用特定的策略可以精确开发以支持测试环境所需的冻结计划。理想情况下是自动化的,可以从外部源接受冻结/解冻触发器,这些外部源可以是测试执行包装程序或CI系统。

当然,软件管理系统的这种功能在测试设备的其他组件时会有所帮助,但对于软件管理的测试可能不会系统本身。

评论


这个答案完全是关于我习惯(大型机)的事情,在这些环境中我们至少已经进行了1.5年左右的时间(在“ DevOps”诞生之前)。我想在这里添加我自己的答案(进一步扩展这个答案,例如我们如何使用CMN / ZMF来处理“银行”)是否有意义,或者仅将其带到一个新的(自我回答)问题。你怎么看?

–Pierre.Vriens♦
17年3月18日在8:10

也许单独一个更好些-我的主要观点是,因为我没有直接经历过这样的环境,所以我只是偶尔和做过此事的朋友讨论过。

–丹·科尼莱斯库(Dan Cornilescu)
17年3月18日在13:25

#2 楼

TeamCity具有共享资源构建功能,该功能使您可以定义多个构建定义所依赖的资源。构建定义可以要求具有读锁或写锁,还可以定义这些锁是排他锁还是允许一定程度的并行性。如果我们对名为PreProd的共享环境进行以下假设:


存在一个名为“ PreProd”的共享资源。
对该环境进行任何更改的所有构建定义(如部署)都对“ PreProd”具有专有的写锁。
在环境上执行只读操作的所有构建定义(例如非限制性测试)都对“ PreProd”进行非排他的读取锁定。 PreProd,尽管可能通过其他工具。 。
运行测试时,任何部署都将排队等待,直到测试完成。露金实际上,您可以使用锁定或信号量将此功能构建到任何进程中,例如Apache ZooKeeper或HashiCorp Consul。

评论


很好地描述了我在“警卫队”构想中所做的“标准”实现:)

–滕西拜
17年3月17日在22:01

merci,分享或添加到TeamCity本身的链接,以了解更多信息吗?

–Pierre.Vriens♦
17年3月18日在7:51

抱歉,我在答案中添加了到TeamCity和Jenkins的超链接,我个人可以推荐有关Udemy的TeamCity课程。

–Richard Slater
17 Mar 18 '17在9:23

谢谢额外更新! PS:为什么不在答案中也包含课程链接,例如最后通过PS?这样,如果有一天主持人出现并开始删除评论,就不会有丢失的风险(我在其他一些SE网站上碰到的很多事情)。

–Pierre.Vriens♦
17年3月18日在9:40



一般而言,我对在SE网站上的答案中发布指向商业内容的链接持谨慎态度。我建议本课程对我有帮助,但是,因为这是我选过的唯一一门课程,完全是我自己的观点。

–Richard Slater
17年3月18日在10:30

#3 楼

这听起来像是对我的反模式。我相信每个人或任何人都不应该有权使用所有环境。 />
实施强制执行特定状态的自动机制对于鼓励人们以正确的方式做事也很有用。这可以通过Config Management进行管理,也可以在有人通过SSH对其进行销毁的情况下销毁任何不可变的实例

评论


请检查我添加的第二个“注释”。让您重新考虑第一段是否有帮助?除此之外,我不明白您答案的其余部分实际上如何回答我问题的“如何”部分。也许其中有些我不理解的地方,所以请您帮我更好地了解您的答案吗? PS:别担心,我很少对答案投反对票(如果这样做,我会留下评论……)。

–Pierre.Vriens♦
17年3月13日在20:33

您有一个xy问题meta.stackexchange.com/questions/66377/what-is-the-xy-problem。我不是在回答如何实施您的解决方案,而是在回答如何解决您的问题。

–机器人
17年3月14日在6:14

@Robo我不同意,这个问题如何有意义,没有任何颠覆或任何其他形式。在测试期间,这可能只是暂停任何自动更新。您将其视为手动操作,重点是:避免其他人仍在依赖应用程序A的版本X中测试应用程序B时,避免其他人将应用程序A升级到版本Y。要求更新被测依赖项。

–滕西拜
17年3月14日在9:33

您的问题不清楚。在这种情况下,您需要某种锁定。

–机器人
17年3月14日在9:39

请注意,我只是整合了@Tensibai的(大部分)评论,作为进一步的澄清(最后一个项目符号)。希望“它”有助于使我的问题更清楚。也许您(机器人)还想根据额外的说明来复核您的答案?附言:Merci Tensibai ...

–Pierre.Vriens♦
17 Mar 15 '17 at 12:46