Screwdriver 是 Yahoo 开源的持续交付构建系统,Screwdriver 的一些关键设计功能帮助 Yahoo 实现了大规模持续交付能力。从宏观看,这些关键设计是:
使部署管道容易
优化主干开发
使回滚容易
轻松部署管道:部署持续测试、集成和部署的代码到生产环境的管道时,大大降低错误的风险,并缩短了获得开发人员反馈的时间。通常,许多团队面临的挑战是设置和维护管道很麻烦。Yahoo 工程团队设计了一个解决方案,使管道易于配置,并为任何开发人员提供完整的自助服务。通过管理代码库中的管道配置,Screwdriver 允许开发人员以他们熟悉的方式配置管道,另一个好处是,也可以轻松地审查管道的变化。
主干开发:在 Yahoo 内部,鼓励主干代码总是可交付的工作流程。团队使用修改后的 GitHub 流程来完成工作流程。 Pull Requests(PR)是运行测试的入口点,确保进入仓库的代码已经过充分测试。坚持正式 PR 也提高了代码审查的质量。
为了确保主干是可交付的,在 PR 中启用代码的功能测试。在内部,这是一个配置管道,动态分配计算资源,部署代码和运行测试。这些测试包括使用 Selenium 等工具的 Web 测试。这些动态分配的资源也可在 PR 构建之后的一段时间内也照常使用,从而让工程师与系统交互,并以可视化的方式检查其变化。
容易回滚:为了允许简单的代码回滚,允许这样管道的阶段:重新运行前保存的状态。工程团队利用 PaaS 中的功能来处理部署,但是通过存储和传递元数据以便能够用具有相同部署数据重新运行特定 git SHA。这样,可以回滚到生产环境中的先前状态。此设计使回滚很容易,只要从下拉菜单中选择一个版本并单击“部署”即可。任何有项目写权限的人都可以进行此更改。这有助于将团队迁移到 DevOps 模型,这个模型让开发人员负责生产环境中的状态。
介绍内容来自:网路冷眼
Yahoo! 开源了他们在内部生产系统中使用的持续交付工具Screwdriver。\u0026#xD;\n\u0026#xD;\n Screwdriver作为一种持续交付工具,集成了从代码提交到生产系统部署的所有步骤。Yahoo!在过去五年中逐步使用Screwdriver去自动化所有的交付过程,现可达到每日超过25,000次的构建和多于12,000次的git提交。按Yahoo!的说法,他们所希望的
交付管道的建立和自动化是持续交付的基础 持续集成 更关注代码质量。持续集成是为了确保随着需求变化而变化的代码,在实现功能的同时,质量不受影响。因此,在每一次构建后会运行单元测试,保证代码级的质量。单元测试会针对每一个特定的输入去判断和观察输出的结果,而单元测试的粒度则用来平衡持续集成的质量和速度。 持续集成的核心价值在于1: 持续集成中的任何一个环节都是自动完成的,无需太多的人工干预,有利于减少重
它们还提供了一个警告:如果您能够持续部署到测试系统,有时也会使用术语“持续部署”。 这一切让我很困惑。任何更详细的解释(或附带一个例子)都是赞赏的!
介绍 持续交付是频繁对软件应用程序持续更新的概念. 这个想法使在大量频繁的更新面前, 你不必等待在一个指定的特殊时间点, 并且使你的组织在响应过程中变得更好. 一些 Ansible 用户每小时都在部署更新给他们的最终用户甚至更加频繁 – 每时每刻都有代码修改的批准. 要实现这一点, 你需要工具能在零停机的时间内快速的应用这些更新. 本文档详细介绍了如何现实这一目标, 使用 Ansible play
我为老东家的 CTO 部门工作的七年里,除了吃饭睡觉码代码,干的最多的事情就是布道。给工程师讲技术,给管理层讲业态,给客户讲故事。但让我很沮丧的是,在离职那天给我留言最多的一条,居然是「很遗憾,再也听不到你讲美食了」。好吧,虽然我们怀揣着改变世界的梦想踏上征程,却总是在路口的料理摊停下了脚步。这个插曲,就算是我这系列文章的引子。 每一个吃货的心里,都住着一个厨子。 每一个码农的心里,都憋着一个梦想
什么是持续交付? 持续交付是当前一个挺火的概念,它所描述的软件开发,是在从原始需求识别到最终产品部署到生产环境这个过程中,需求以小批量形式在团队的各个角色间顺畅流动,能够以较短地周期完成需求的小粒度频繁交付。频繁的交付周期带来了更迅速的对软件的反馈,并且在这个过程中,需求分析、产品的用户体验和交互设计、开发、测试、运维等角色密切协作,相比于传统的瀑布式软件团队,更少浪费。 简单来说,持续交付是一种
使用静态分析工具识别代码味道 重构是公认的改进现有代码的好方法。然而,如何通过一种一致且可重复的方式 找到需要重构的代码呢?本期的 让开发自动化阐述了如何使用静态分析工具来识别需要重构的代码味道,并举例说明了如何改进坏味道代码。 在过去的几年里,我曾看过很多项目的大量源代码,从精美的设计到像是用胶带绑定到一起的代码。我写过新的代码也维护过其他开发人员的源代码。我喜欢编写新的代码,但也喜欢采用一些现