我不是开发人员,但此刻正在阅读CI / CD。现在我想知道自动代码部署的良好实践。到目前为止,我已经阅读了很多关于将代码部署到预先存在的环境的内容。
我现在的问题是,使用例如是否也是好的做法。在创建新构建时从头开始部署环境的Jenkins工作流。例如,为了测试新创建的构建,在测试后再次删除环境。
我知道有各种插件可与AWS,Azure等交互,可用于开发部署虚拟机的作业。 还有一些插件可以触发Puppet部署infra(作为代码),还有一些插件可以调用架构流程。 因此,在部署代码之前,所有内容都可以部署基础架构和中间件(当然还需要额外的努力)。
这是现实生活中使用的东西吗?怎么做?
我的问题的背景是我对完全自动化开发感兴趣,尽可能少点击,并且通过不使用闲置机器在按使用付费模式中节省成本。
答案 0 :(得分:0)
我现在的问题是,使用例如是否也是好的做法。在创建新构建时从头开始部署环境的Jenkins工作流程
是的,从头开始部署环境是一种好习惯。就像你说的那样,Jenkins和Jenkins管道当然可以帮助你根据你的具体要求开始和编排这个过程。从头开始部署完整环境是最难自动化的事情之一,如果这是自动化的,则意味着许多其他事情也是自动化的,例如基础架构,应用程序部署,应用程序配置等。
这是现实生活中使用的东西吗?
是的,当然。很多商店都这样做。您的环境越简单越容易,因此,使用一个后端应用程序启动时,实现此valhalla状态的麻烦相对较小。但即使创建最复杂的环境 - 拥有数百个相互依赖的应用程序 - 也可以完全自动化;它需要更多的时间和精力。
我的问题的背景是我对完全自动化开发的兴趣,尽可能减少点击次数,并且通过不使用空转机器在按使用付费模式中节省成本。
是的,当然。 “旋转和销毁”策略使所有托管模型受益(因为,在完全自动化之后,没有人必须等待某人手动配置环境),但使用公共云的人在成本方面看到更大的好处(与例如,让AWS环境继续运行。
感谢您的想法。
不是问题。我会建议这个问题不适合stackoverflow的问题和答案,因为它非常一般。在将来,我会建议与你的开发人员聊天,寻找那些对这类事情感到兴奋的人,并在你们陷入困境时制定更具体的问题。欢迎来到stackoverflow!
答案 1 :(得分:0)
所有正在以各种组合使用;目标是为最终用户提供持续的价值。我的两分钱:
构建&释放强> 这取决于你使用的是什么。我个人建议使用该工具提供的功能。例如,VSTS(Visual Studio Team Services)提供完整的CI / CD管道。但是如果你有一个只能由Jenkins服务的独特需求,那么你必须使用它并且VSTS提供开箱即用的功能。
IAC(基础架构代码) 除了Puppet等之外,您还可以利用AZURE ARM(Azure资源管理器)模板来构建和销毁环境。再次,使用您拥有的工具集查看开箱即用的内容。
<强>收费使用强> 我个人使用的是Azure开发/测试实验室,并通过CI / CD管道部署代码。稍后在VM上设置关闭策略,以便根据提供的时间自动启动和自动关闭。这是一个很棒的功能,可以节省使用资源和复制环境的成本。
例如,在签署QA之前可能不需要UAT环境。但是使用IAC,您可以自动快速启动环境,然后通过一键式部署设置将代码部署到UAT。