自动化部署:提升软件开发效率的关键

在最近的一些大型项目中,注意到团队成员每周花费大量时间在创建、维护和部署软件包上。这些宝贵的时间本可以用于修复缺陷或通过增加软件功能来为业务增值。然而,它们却被用于手动执行和调整软件安装,这往往伴随着人为错误带来的额外开销。

自动化部署的另一个优势是,可以有很高的信心快速对软件进行更改,并将其构建和部署到测试和生产环境中。代码越早进入生产环境,它就能越早为业务或客户创造价值。最近,和同事Sam()花了整个周末重构了一个大型Web项目,使其更简单、更快地打包。然后为该网站设置了自动化部署流程。在自动化之前,部署过程需要开发者每两周手动进行1-2天。现在,从代码提交到自动化构建和部署到开发测试环境只需大约10分钟。现在每天的部署次数远远超过14次!

随着Microsoft Azure Websites和源代码控制集成的引入,再也不能接受手动部署网站了,对于绝大多数简单的网站项目来说,这是一个很好的选择。对于其他情况...有Octopus Deploy。

Octopus Deploy

在以Microsoft为中心的开发生涯中,没有什么比Octopus Deploy更能改变游戏规则的了。这是一个简单(且实惠)的产品,允许配置可重复和可配置的软件部署流程。Octopus Deploy主要用于部署基于Windows服务器的应用程序,如Windows服务、网站等,尽管它最近通过SSH获得了对Linux部署的支持(假设OS X也可以工作)。重活由安装在目标机器上的一群代理(当然,按照头足类动物的主题,这些显然是"触手"——尽管肯定可以有超过8个)来完成。

下面的屏幕截图显示了Octopus Deploy的主要仪表板,可以在这里快速了解项目(在左侧)和环境(在顶部)。可以很容易地看到每个项目在每个环境中安装的版本,是否有任何失败,或者是否有任何正在部署中。

应用程序包就是NuGet包,可选地附带一些额外的PowerShell脚本来帮助事情进行。在幕后,Octopus Deploy可以通过作用域变量存储和使用关于应用程序的各种信息。这些可以根据环境、产品甚至正在安装到的特定机器替换到部署过程中。

这个产品的工作原理使得以敏捷的方式工作变得非常容易,快速更改部署流程或变量,并快速重新部署到环境中,直到流程完全正确。一旦对开发或集成环境(例如)的过程感到满意,可以将部署提升到下一个环境(如暂存或生产)。这个过程的最大好处是不需要手动做任何事情,而且因为它是可重复的,当通过环境进行时,可以有更大的信心,生产部署已经经过了很好的测试。当然,这个说法的一个警告是需要保持各种环境在架构上大致相似,以避免在最后出现意外的变化。

企业特性

在大型企业采用Octopus Deploy的一个争论是关于如何控制谁可以设置部署,设置变量,以及随后将包部署到各种环境中。虽然Octopus Deploy已经有了一个很好的基于角色的安全性系统一段时间,但仍然有一个问题,那就是如何强制一个特定的部署通过适当的测试和QA环境。在Octopus Deploy的最新版本(2.6 / 2014年12月)中,他们增加了一个新的"生命周期"特性,解决了这个问题,这很了不起...大部分。这个新特性的唯一缺点是它完全按照设计工作,不能像以前那样偷偷跳过流程中的步骤。该死!

有了这些灵活的安全选项和完整的审计,让开发人员和测试人员访问系统变得非常容易,这样他们就可以开发和测试自己的部署流程,而不必把任务扔给运维团队。在工作中,给了一些团队访问Octopus Deploy实例,每次看仪表板时,都有新的应用程序被部署到开发和测试环境中。这有点棒。

可扩展性和集成

在几个初创公司、开源项目和工作中使用Octopus Deploy。在各种场景和规模中使用它,发现它几乎总是可以开箱即用。在少数基本产品没有默认执行部署能力的情况下,总是能够通过添加"步骤模板"(),通过添加一些自定义PowerShell或通过功能齐全的REST API来实现目标。

集成过程的最终例子是使用JetBrains的TeamCity来执行代码的自动化构建,将其打包成NuGet包,并推送到Octopus Deploy进行交付。一旦它在Octopus Deploy中,可以执行自动或手动触发的部署,并调用PowerShell脚本来做诸如发布到HipChat或Slack这样的事情。今天,克隆了Slack通知脚本,制作了通用WebHook方法(将很快在博客上发布这个)。

作为工作中的一个有趣的项目,想将Netduino或Arduino与Octopus Deploy集成,以及这个按钮(来自Jaycar Electronics),这样就可以真正地进行"一键"部署到生产。

沪ICP备2024098111号-1
上海秋旦网络科技中心:上海市奉贤区金大公路8218号1幢 联系电话:17898875485