2

我工作的商店正在使用 jenkins 进行持续集成,并使用其升级的构建插件来部署构建工件。但是,随着配置数量的增加,我们在管理此设置时遇到了麻烦。所以我的问题是:

如何设置一个方便的 CI 系统,我可以从中部署各种配置的各种工件,而无需手动编写每个可能的组合脚本?

更多细节:

假设我有构建配置(即分支)AB并且C. 有 3 个部署目标IJK(例如针对各种客户端或消费者)。最后,每个部署的实例都有各种服务XYZ (例如网站、后台任务和数据服务)。各种服务通常是一起推广的;但有时,特别是为了获得修补程序,它们不是。

目前,我们对这些组合中的每一个都有促销活动。所以要安装一个典型的构建,我需要运行 PromotionsJ/X和config 。不幸的是,服务的数量正在增加,并且在 jenkins 中获取所有这些配置而不会出现任何错误,并且确保在部署时不会忘记或混淆任何组件变得越来越棘手。当然,有超过三个构建配置和三个以上的目标,所以这一切都失控了。J/YJ/ZC

一些不太有效的选项:

  • 参数化促销以禁用各种组件。Jenkins 允许参数化促销,但值在您第一次促销时是固定的。我可以通过提升和设置一些参数来消除一定的自由度J,但是如果以后的版本坏了,我不能只回滚坏的组件,我需要回滚整个部署。

  • 依赖的,参数化的构建。Jenkins 似乎不支持选择依赖哪个构建的参数,如果您手动编码选项,那么“运行”选择参数当然无法工作。

我真正想要的:

  • 在手动接受构建以准备部署后,应将其标记为这样,包括针对哪个目标的参数和针对哪些组件的参数。

  • 安装历史记录按组件按目标记录,而不是(仅)按构建记录。

4

1 回答 1

0

可能有一些插件可以提供帮助,但您也可能正在接近适合查看商业工具的地步。我为构建/部署供应商 ( Urbancode ) 工作,所以一定要对它持保留态度。

我们通常看到人们对单个项目有不同的构建类型(或分支),并将它们分组为具有多个“构建工作流”的单个“项目”,使用相同的基本配置和每个工作流参数化。真正简单的流程重用。

不幸的是,服务的数量正在增加,并且在 jenkins 中获取所有这些配置而不会出现任何错误,并且确保在部署时不会忘记或混淆任何组件变得越来越棘手。当然,有超过三个构建配置和三个以上的目标,所以这一切都失控了。

如果这里的挑战是您有多个 Web 服务和促销(尤其是对生产)涉及以协调的方式推送大量特定版本的东西,那么您将达到我们的应用程序发布自动化工具uDeploy 的标准用例。它方便地与 Jenkins 集成。它还可以很好地跟踪哪个版本的部署目标是什么,以及谁运行了该过程。

于 2012-12-19T05:40:00.600 回答