Questions tagged «deployment»

使用此标记可以解决有关部署的问题,该问题涉及使系统(一部分)可以在某些目标环境中使用的所有活动。

1
如何实现从“一个用于所有产品的大型VCS存储库”组织模型到“许多小型VCS存储库”模型的平稳过渡?
通常的情况是,某些VCS系统中存储库所拥有的产品的代码库会发展到可以认为该代码库包含多个产品的地步。在多个VCS存储库中拆分代码库,每个VCS存储库专用于单个产品,可以利用多种好处(请参见下面的膨胀存储库模型,每个VCS存储库都有一个产品的好处)。从技术方面来说,拆分代码库是一个相当简单的步骤,因为大多数VCS支持此操作。但是,拆分可能会引起与自动化测试,持续交付,服务集成或监视有关的工程问题(请参阅拆分所引发的问题)。)因此,计划进行这种拆分的组织需要知道如何尽可能平稳地执行此过渡,即在不中断其交付和监视管道的情况下。第一步可能是更好地理解项目的概念,以及如何在整体代码库中描述拆分。 在此问题的答案中,我希望看到: 尝试给出产品的实际定义,这提供了在实际代码库中实际描绘产品的实用准则。 根据此工作定义,制定一个实际执行拆分的计划。我们可以简化假设,即代码库是由实现连续集成和持续交付的全自动sdlc处理的。也就是说,每个分支都由在当前代码库中实现的自动化测试套件进行验证,并且每个合并到某个“魔术”分支中都会生成经过测试和部署的产品工件。(产品文物是如源压缩包,文档,二进制软件包,多克尔图像阿美族,unikernels。) 如果它说明了如何规避 分裂引起的问题 自动化测试程序如何与预先存在的整体存储库和拆分存储库相关联? 自动化部署过程如何与预先存在的整体存储库和拆分存储库相关联? 自动部署过程本身的代码存储在哪里? 存储的基础架构,监视和高可用性策略在哪里? 如何确保开发人员一次只需要一个代码库(但可能会使用其他代码库的伪像)。 像git-bisect这样的工具 边际说明:与膨胀的存储库模型相比,每个VCS存储库拥有产品的好处 与“膨胀存储库”方法相比,拥有多个小型存储库来保存特定产品的代码库具有以下优点: 使用膨胀的存储库,当产品不稳定时,很难回滚发布,因为历史记录与其他产品历史记录混合在一起。 对于庞大的存储库,使用小型存储库很难查看项目历史记录或请求,而我们更可能阅读此信息。(这可能特定于git之类的VCS,与svn不同,我们无法检出子树!) 使用庞大的存储库,我们在开发时必须做更多的分支舞蹈。如果有N个存储库,则可以在N个分支上并行工作;如果只有1个存储库,则只能在一个分支上工作,或者有大量工作副本,这也很麻烦。 日志中有几个小型存储库,提供了该项目的热图。他们甚至可以用作开发团队中知识传播的代理人:如果我三个月以来没有从事repo X,最好将我分配到从事repo X的团队中,以便我随时了解发展情况。在该组件中。 使用小型存储库,更容易获得组件的清晰概述。如果所有内容都放在一个大的存储库中,则没有描绘每个组件的明显伪像,并且代码库可以轻松地移向泥潭。 小型存储库迫使我们致力于组件之间的接口。但是由于我们希望有一个好的封装,无论如何我们都应该做这项工作,因此我认为这对于小型存储库是一个优势。 使用几个小型存储库,可以轻松拥有多个产品所有者。 使用几个小型存储库,可以轻松地拥有与完整存储库相关的简单代码标准,并且可以自动进行验证。

4
使用deb软件包就像将其部署为应用程序的容器一样,是否有任何缺点?
我的团队目前正在尝试确定是否应将我们的Nodejs应用程序部署为deb软件包,而不是尝试在诸如Docker的容器中运行它。 我从这里阅读此博客时得到了这个想法,该博客为将deb包用于预先存在的python应用程序提供了一些很好的论据。这个博客吸引我们的重点是维护Docker生态系统的问题(端口共享,权限,Docker映像的托管等)。 对于没有端口冲突且所有依赖项都在虚拟环境中维护的小型服务而言,“将dep-packages作为原始容器”似乎很有意义。 但是,我的直觉告诉我,如果deb软件包非常合适,它将更加常见,并且docker将被宣传为一种针对特定语言的解决方案。使用诸如deb包之类的东西来部署我们的服务,而不是使用诸如docker这样的完整系统是否有任何弊端?

2
有哪些方法可以使部署与发布脱钩?
连续部署的一种方法是将部署与发布脱钩,即在不立即激活更改的情况下部署更新。 我知道可以使用功能切换,但是我想知道是否还有其他“非功能”技术。 例如,您会为错误修正构建功能切换吗?可能不是,而且有人可能会争辩说应该尽快部署错误修正,因为它只会变得更好。而且,在发布错误修正后,我当然不想再将其关闭。但是是这样吗?您想以受控方式发布可能是一项冒险的更改。如果有有意想不到的副作用,这是很好的能够回滚。那么,每项更改的功能标志? 视觉变化又如何呢?例如,您可以在CSS中实现类似功能标记的功能吗?有道理吗?

2
设计蓝绿色部署如何将网络套接字流量从实时服务器发布到热插拔服务器
蓝绿色部署涉及将活动产品数据流(蓝色)泵入热交换非产品环境(绿色)中,以准备部署到绿色环境中,从而使绿色具有与先前产品蓝色环境的完整数据同步。 我想知道人们正在使用什么方式将正在进行的Websocket流量从蓝色实时复制到绿色,我是自己编写还是发布/订阅Websocket库,或者是否有其他方法可以实现蓝绿色? 我的应用程序具有nodejs REST服务器,该服务器还管理来自移动设备的websocket通信... mongodb服务器等...每个都在GCE / AWS上的容器中 我意识到我可以使mongodb从蓝色同步到绿色,但是这不会使绿色的Node.js服务器具有实时流量,这是我正在寻找的不错的回归合理性检查 如果我只转发HTTP流量,则运行在HTTP之上的基础websocket可能会自行处理,而不需要特定的蓝绿色设置

2
如何存储应用程序所需的凭据?
所有人都说将凭据存储在版本控制(git)中是一件坏事。因此,必须有其他更好的存储凭据的方法。 应用程序必须从某处接收凭据才能使用其依赖的服务。这些凭据通常存储在配置文件中。手动输入每台服务器以创建该文件是不可能的,因为服务器的往返操作无需人工干预。 如何管理应用程序的凭据?

2
如何使用Kubernetes自动执行部署?
假设我已经通过Rancher部署了Kubernetes,并且Jenkins正在构建新映像,并在将新代码签入GitHub后将它们推送到DockerHub,我如何自动化部署新映像? 提出问题的另一种方式可能是:“我以前使用Octopus来管理我的部署。是否有类似Kubernetes或Rancher内置的东西?” 最终,这是我正在努力的最后一个差距。

4
基础架构即代码和TDD
作为代码的基础架构告诉我们使用自动化构建的工具。大。像工具ansible,厨师,木偶,盐栈以及其他推动我们写作基础设施长相怎么样,而解决分歧。 在Salt Stack中,这些位称为状态。如果状态与现实不符,该工具将为我们解决。换句话说-我们正在为基础架构编写测试,如果测试失败,该工具将自行修复。至少那是主意。 XP教我们如何使用TDD,问题是它是否适用于基础架构?工具表明确实如此。 我可以想象几种非常有用的测试类型。 我们编写与部署的服务捆绑在一起的冒烟测试,以确保端到端的部署服务正常运行。这将是一个API调用或/和systemctl检查,以确保我们刚刚部署的内容能够正常工作。由于诸如ansible之类的工具具有确保服务正在运行的状态,因此许多功能都可以在相同的状态下涵盖。 有一个项目Molecule允许针对docker或另一个临时虚拟化引擎运行单独的角色(如Ansible所说的那样)。这迫使角色分离,并允许在处理角色时将其与剧本隔离地执行。测试通常允许模拟该角色应该使用的变量。但是,其他示例似乎是ansible引擎的副本(声明文件属于用户...)。 ThoughtWorks的高科技雷达,现在推崇一样的工具INSPEC,serverspec或戈斯用于验证服务器是否满足规范。但是我们正在编写规范,不是吗? 如果我们以状态/角色描述基础架构,那么进一步测试基础架构是否有意义?我想这可能会在较大的组织(由一个团队提供规范并遵循其他规范)中变得更加必要,或者如果有大量角色,也许您想运行其中一部分并从测试中获得快速收益?我很努力地想知道,如果您对相同的问题有一个角色/状态,为什么还要编写测试。

2
用于存储每个环境配置的工具
我需要在每个环境中将配置信息存储在工具中。 这是一个带有GUI的工具,用于添加/更新配置值(例如,连接字符串)。这应该具有默认值,并且能够根据不同的环境进行更改。 应该有一个API,可以在部署到特定环境以添加到应用程序期间检索这些配置值。 我搜索了一段时间,找不到适合此账单的任何工具。有什么建议吗? 注意:当前设置在TeamCity变量中,并且通过PowerShell脚本进行部署。

2
是否可以使用Travis CI和GitHub自动部署特定分支中的每个提交?
我想使用Travis CI部署文件,它仅适用于带标记的提交。提交到分支时,会出现警告: 使用发布提供者跳过部署,因为这不是带标记的提交。 是否可以使用Travis CI在分支提交上进行部署? 为了澄清起见,当我标记提交时它可以工作,但是我想在给定分支的每次提交上部署文件。

5
配置管理工具是否适合用作部署工具?
我没有回答这个问题:DevOps如何帮助改善软件托管程序?Tensibai的问题是: 在木偶或厨师的头上需要Capistrano是什么? 我的回应是发布指向Noah Gibbs的文章“我们需要Capistrano和Chef吗?”的链接。。我个人仍然同意诺亚的观点,它最适合: 使用专业的部署工具(例如Capistrano)进行部署。 使用专业的配置管理工具(例如Chef)进行配置管理。 每种类型的工具用来完成其任务的基本方法都非常不同: 配置管理工具 -与创建和维护系统的期望状态有关,它们本质上是固有的。配置管理工具的示例包括Chef,Puppet,Ansible,PowerShell DSC,Salt Stack。 部署工具 -与将软件版本交付到主机环境有关,它们提供的功能可以在多台计算机上维护软件的多个版本并管理哪个版本是“当前”版本,它们本质上是必不可少的。部署工具的示例包括Capistrano,Octopus Deploy,Deployer和Command.io。 我确实相信配置管理工具可以完成部署工具的工作,并且在不可变基础架构的情况下,它们是最合适的工具,因为不需要维护目标上的软件版本。 问题: Chef,Ansible和Puppet等配置管理工具是否已成熟到可以同时满足幂等和命令式模型的程度?
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.