使用 Amazon EC2 为 Jenkins 构建解决方案 - 如何在构建之间保持状态

使用 Amazon EC2 为 Jenkins 构建解决方案 - 如何在构建之间保持状态

我正在尝试使用 Jenkins 将我的构建环境移至 EC2。每次我都要检查大量源代码,因此我想在构建之间持久保留源代码。

如果 Jenkins 在需要时停止/启动 EC2 实例,这将很容易(因为我可以将 AMI 与根 EBS 卷关联起来)。但是 Jenkins 会在不使用时终止实例。

我尝试使用 Jenkins 的启动命令创建一个单独的 EBS 卷并将其附加到 EC2 实例,但问题是 EBS 卷和 EC2 实例可能位于不同的可用区域。Jenkins 在启动实例时无法控制可用区域。

那么有没有办法使用 Jenkins/EC2 接口来保持构建之间的状态?也许是快照?

这不是我的问题了解更多背景信息。

答案1

我查看了 Jenkins 的源代码,这是一个合理的解决方案。添加选择区域中可用区域的选项或将终止更改为简单停止并不需要太多的黑客攻击。我认为这是最好的方法。

如果有足够的动力,我可能会发布补丁。源代码位于https://github.com/jenkinsci/ec2-plugin/如果你熟悉 Java。

答案2

我建议你看一下部署管理工具。越来越多的人托盘社区将它与 Jenkins 结合使用来完成您所描述的事情。

Pallet 是一个类似于 Chef/Puppet 的 Clojure 框架,它使用 JClouds 与 Amazon、Rackspace 或其他云提供商进行交互。如果需要运行测试套件,Jenkins 可以调用 Maven Pallet 来部署整个集群。完全可以按照您描述的方式操作,但目前需要具备一些有关 JClouds 和 Pallet 工作原理的特定知识才能实现。

如果您需要做的正是您所描述的,那么 ec2-plugin 修改可能是最好的方法。如果您需要进一步推进并想要可维护的实例,您可以看看 Pallet + Jenkins。

相关内容