【问题标题】:CI / CD: Principles for deployment of environmentsCI/CD:环境部署原则
【发布时间】:2017-05-01 13:48:06
【问题描述】:

我不是开发人员,但目前正在阅读有关 CI/CD 的信息。现在我想知道自动化代码部署的良好实践。到目前为止,我阅读了很多关于将代码部署到预先存在的环境的信息。

我现在的问题是使用例如一个 Jenkins 工作流程,用于在创建新构建时从头开始部署环境。例如,为了测试新创建的构建,测试后再次删除环境。

我知道有各种插件可以与 AWS、Azure 等进行交互,这些插件可用于开发用于部署虚拟机的作业。 还有一些插件可以触发 Puppet 部署基础设施(作为代码),还有一些插件可以调用基础架构编排。 因此,一切都可以在部署代码之前部署基础设施和中间件(当然需要付出一些额外的努力)。

这是在现实生活中使用的东西吗?是怎么做到的?

我的问题的背景是我的兴趣是通过尽可能少的点击实现完全自动化的开发,并通过没有闲置机器在按使用付费的模式中节省成本。

【问题讨论】:

    标签: jenkins automation workflow devops continuous-deployment


    【解决方案1】:

    我现在的问题是使用例如创建新版本时从头开始部署环境的 Jenkins 工作流程

    是的,从头开始部署环境是一种很好的做法。正如您所说,Jenkins 和 Jenkins 管道当然可以根据您的具体要求帮助启动和编排该过程。从头开始部署完整的环境是最难实现自动化的事情之一,如果这是自动化的,则意味着许多其他事情也是自动化的,例如基础架构、应用程序部署、应用程序配置等。

    这是在现实生活中使用的东西吗?

    是的,当然。很多商店都是这样做的。您的环境越简单,就越容易,因此,拥有一个后端应用程序的初创公司在实现这种瓦尔哈拉状态时遇到的麻烦相对较小。但即使是最复杂的环境的创建——具有数百个相互依赖的应用程序——也可以完全自动化;只是需要更多的时间和精力。

    我的问题的背景是我的兴趣是完全自动化的开发,尽可能少的点击次数,并通过没有闲置机器在按使用付费的模式中节省成本。

    是的,当然。 “启动和销毁”策略有利于所有托管模型(因为在完全自动化之后,没有人需要等待有人手动配置环境),但那些使用公共云的人在成本方面看到了更大的好处(而不是总是例如,让 AWS 环境运行)。

    我很欣赏你的想法。

    没问题。我会建议这个问题不适合stackoverflow的问题和回答甜蜜点超级好,因为它很笼统。将来,我建议与您的开发人员聊天,找到对这类事情感到兴奋的人,并在你们都陷入困境时提出更具体的问题。欢迎使用 stackoverflow!

    【讨论】:

      【解决方案2】:

      所有都以各种组合使用;目标是为最终用户提供持续的价值。我的两分钱:

      构建和发布 这取决于您使用的是什么。我个人建议使用该工具提供的功能。例如,VSTS(Visual Studio Team Services)提供完整的 CI/CD 管道。但是,如果您有一个只能由 Jenkins 满足的独特需求,那么您必须使用它,而 VSTS 开箱即用地提供了它。

      IAC(基础架构即代码) 除了 Puppet 等之外,您还可以利用 AZURE ARM(Azure 资源管理器)模板来构建和销毁环境。再次,看看您所拥有的工具集有哪些开箱即用的功能。

      按使用付费 我个人使用的是 Azure 开发/测试实验室,并通过 CI/CD 管道将代码部署到该实验室。稍后在 VM 上设置关闭策略,使其根据提供的时间自动启动和自动关闭。这是一个很棒的功能,可以让您节省正在使用的资源和复制环境的成本。

      例如,在签署 QA 之前,可能不需要 UAT 环境。但是使用 IAC,您可以快速自动启动环境,然后通过一键部署设置将代码部署到 UAT。

      【讨论】:

        猜你喜欢
        • 2018-10-30
        • 1970-01-01
        • 2019-11-25
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2023-03-16
        • 1970-01-01
        • 2020-01-10
        相关资源
        最近更新 更多