我有一个 jenkins ubuntu 服务器和几个在 ec2 上运行的 windows 节点。我希望服务器根据需要打开和关闭 Windows 框。我认为这意味着在节点配置中使用“启动方法”,但我不确定要写什么。
我目前将启动方法设置为“通过将其连接到主服务器”,并且必须在我的管道开始时有一个步骤来调用aws ec2 start-instances --instance-ids XXX
以启动实例,以及在完成管道时等效的停止实例,但这意味着每个作业打开和关闭机器,即使有另一个作业排队。
我也许可以将 aws 命令放入节点配置中,但我只有一个命令框。我不能输入一个命令来关闭它,另一个命令来打开它。
这里有帮助的插件吗?或者一种设置 aws 调用以使其工作的方法?我什至是正确的启动方法是我想要的盒子吗?
除了我之前关于基本节点配置选项的回答之外,slave-setup 插件可能提供了进一步的可管理性。
有一个“预启动脚本”选项,
插件还提供“按需从站设置”:该插件还为您提供了针对按需从站的每个从站“启动”和“停止”脚本配置。这可能完全符合您的需求。
我不使用 AWS / ec2,但是......这个答案是为上下文提供的,以解释节点的一些选项并建立在随后接受的答案的基础上,这些答案通常没有很好的记录;请不要投票
您是否查看过节点配置页面中的选项:
${JENKINS_URL}/computer/<NODE>/configure
默认可用性是“尽可能保持此代理在线”
其他选项包括“在需要时使代理联机,在空闲时使代理脱机”。这个选项真的没有多大意义,除非你有办法停止/启动虚拟机,因为它只停止代理服务,而不是虚拟机;不清楚何时这比保持在线更有用。
存在“按需延迟”(在 Jenkins 尝试使该代理联机之前作业必须在队列中等待的分钟数)和空闲延迟(该代理在 Jenkins 之前必须保持空闲的分钟数将使其离线)。即使是 0 分钟也需要一点时间来决定启动或停止。
我还将“使用”调整为“仅使用与该节点匹配的标签表达式构建作业”,使用通用标签(ec2?)标记节点,然后将您的特定阶段与相应的标签联系起来,以更好地控制使用。
如果这不能满足您的需求,AWS 提供的EC2 插件和指南可用于 Jenkins 的成本优化。
如果您喜欢的话,还有适用于AWS Lambda Cloud和AWS CodeBuild Cloud Agents的插件。