问题标签 [continuous-delivery]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
fabric - 如何让一些 Fabric 任务只在本地运行一次,而其他任务在所有主机上运行
在我的织物脚本中,我遇到了以下问题。我有一个名为自动部署的主要任务。在这个任务中,我有一些我只想在本地运行一次的任务。所有远程任务都应该在主机列表的每个主机上运行。
调用如下。我想将角色作为属性传递。
jenkins - 使用 puppet 和 artifactory 持续交付
我有 Jenkins、Artifactory 和 3 个环境(开发、测试和生产)。
当开发人员从开发环境中提交某些内容时,它会在测试环境中进行编译和测试。它的构建和工件存储在 Artifactory 中。
现在我想进行下一步,在 puppet 的帮助下管理环境并将工件从 Artifactory 部署到生产环境。
但我需要一些提示才能开始:
安装木偶的最佳位置在哪里?在与工件一起工作的同一台服务器上?Puppet 也配置环境.. 所以不确定是否有什么需要考虑的。
在安装 puppet 之前或期间是否需要记住任何配置?特别是在人工制品和詹金斯的背景下。
感谢您的任何提示/帮助。
continuous-integration - 内部代码的工件存储库点
想象一下,对于基于云的解决方案,大部分已部署代码是在内部开发的。我的问题是,将 Artifact Repository 用于内部代码有什么意义,您总是可以直接从源代码构建任何版本?
换句话说,将时间花在构建服务器上以简化从代码构建所需的工件版本而不是添加像 Nexus 这样的工件存储库以将构建工件提供给部署不是更有意义吗?
jakarta-ee - 我可以更改war包的配置吗?
我有一个项目,我在我的开发人员环境中对其进行测试、编译和构建战争包。现在我在测试环境中需要这个包,该包需要/具有其他配置。稍后在生产环境中也是如此。
所以我的问题:
我是否需要使用其他配置再次编译和构建项目?
或者我可以只更改 .war 文件中的配置文件吗?
我试图在持续交付的上下文中实现这一点,它说“只构建一次”,但据我所知/读到你不能更改 .war 包中的文件。所以我有点困惑如何在不进行两次构建的情况下解决这个问题。
谢谢你的帮助
puppet - 使用 puppet 在生产环境中自动部署
我想知道如何使用 puppet 自动部署到生产环境。
我的生产服务器上需要 puppet-slave 吗?如果是这样,那是不安全的吗? puppet 有什么权利?
一个用例可能是从存储库管理器获取包,然后将其部署到生产服务器。puppet 这种方式的主要步骤是什么?
linux - 回滚生产部署
我即将自动部署到测试服务器和生产。
我有一个 ci-server(构建、编译、junit)和一个工件存储库管理器(存储要部署/发布的构建)。
目前我可以使用脚本部署到测试服务器(使用 ci-server 执行)。当前没有回滚、数据库备份或数据库更新。所有服务器都有 Suse (linux)。
我想知道是否有更好的部署方式,具有回滚能力?也许是其他免费软件工具?否则,即使只是一些注释也有助于弄清楚我必须做些什么才能进行回滚并且不会弄乱生产。
maven - 是否可以使用具有特定修订版的 maven-release-plugin?
我正在考虑使用 SVN、Jenkins 和 Maven 的部署管道。目前我被困在我通常会调用mvn release:perform
工作副本的地方。
在考虑部署管道时,我想创建一个管道,其中每个提交都可用于发布软件以进行测试/生产。假设我有 5 个构建,我决定将构建 3(带有修订版 3)发布到生产环境。已经有 2 个新的主干提交(现在是修订版 5)。
是否可以maven-release-plugin
在修订版 3 中使用签出/构建/标记/提交版本?当 maven-release-plugin 完成发布时,它通常会将修改后的 POM 提交到trunk。
我对这里的任何信息或建议都很满意,所以请随时向我介绍书籍(例如http://www.amazon.com/Continuous-Delivery-Deployment-Automation-Addison-Wesley/dp/0321601912),博客文章,詹金斯文档......也许我完全走错了路。
tdd - 持续集成和验收测试驱动开发
我有一个与验收测试驱动开发 (ATDD) 相关的问题。根据流程,我从验收测试(端到端测试)开始每个功能。我提交了这些测试,但它们按预期失败了。问题是我应该以某种方式区分由于功能不完整而失败的验收测试和由于某些回归而失败的验收测试。使用 ATDD 组织 CI 流程的最佳实践是什么?
triggers - jenkins 使用共享工作区进行持续交付
背景:
我们Production
每天晚上都有一个 Jenkins 工作 ( ) 来构建可交付成果。我们还有另一项工作(ProductionPush
)通过专有协议将可交付成果在第二天推送到生产机器。这是因为一些生产机器只在白天的特定时间可用(这也让我们有机会修复任何最后一分钟的构建中断)。 ProductionPush
需要访问由Production
作业构建的可交付成果(因此它需要访问相同的工作空间)。我们有多个节点和并发构建(因此是不可预测的工作空间),并且不希望将作业绑定到固定的节点/工作空间,因为资源有些有限。
问题:
如何确保两个作业共享相同的工作空间并确保
ProductionPush
仅在成功的情况下在第二天的固定时间运行Production
- 而不修复两个作业以耗尽相同的节点/工作空间?我知道参数化触发器插件可能会对此有所帮助,但它似乎没有时间延迟功能,而且 12 小时对于安静的时期来说似乎太长了。共享工作空间是个坏主意吗?
maven - 更改 Maven pom.xml物理价值
我正在为几个相互依赖的项目构建部署管道。每个构建都会生成一个具有唯一版本号的新发布构建,该版本会部署到 Maven 存储库。然后以该新版本作为依赖项触发管道中的下游项目,并以类似的方式构建。
我需要的是在构建项目之前更改 pom.xml(或多模块项目中的所有 pom)中的属性值。例如,在以下代码中,“0.1.200”将更改为“0.1.345”(或任何最新的内部版本号)。使用系统属性不是一个选项,因为更新的 pom 将部署在 Maven 存储库中,因此更改必须是持久的。
是否有一些 Maven 插件可以通过一个命令行指令执行此操作?否则,我将需要编写一个简短的脚本(例如在 Ruby 中)来解析和更改项目中的所有 pom.xml 文件。