工作器与流水线
介绍
- 流水线运行于工作器之上,即安装Buddy本地部署/自托管部署的节点。
- 首次安装Buddy本地部署/自托管部署的服务器称为主工作器。
- 主工作器与其它工作器相同,即可以被标记和锁定。
- 如果流水线标签与工作器上的标签匹配,流水线将在指定工作器上运行。
标签分配机制
流水线可以无标签或任意数量的标签。 一个工作器可以没有标签,或最多有一个标签。
A.如果流水线没有任何标签 > Buddy将查找所有无标签的未锁定工作器
B.如果流水线有标签 > Buddy将查找所有至少有一个匹配标签的未锁定工作器
在这两种情况下,流水线都分配给负载最低的工作器。
流水线分配规则
如果发生以下情况之一,流水线将分配给一个新工作器:
- 流水线首次运行。
- 在过去5分钟内,当前节点上每个CPU内核的平均负载超过100%。
- 工作器的标签与流水线的标签不匹配。
- 当前工作器无响应(离线、不同版本等)。
- 流水线缓存已清除。
使用示例
假设您为集成测试等耗时任务添加了一个工作器:
要将流水线与该工作器匹配,您需要在流水线的设置中选择其标签——或者在新添流水线时立即选择标签。
下面我们有一个带有多个标签的流水线。其中之一与工作器匹配,因此它出现在流水线设置的列表中:
如果您看不到工作器分配选项,您的工作器可能已锁定且无法使用。
弹性工作器
指定工作器变量提供有关平均负载、空闲管道槽数、IP地址和工作器数量的信息,无论是否带有指定标签,您都可以使用。例如,创建一个脚本来启动或关闭基础设施中的额外节点。
工作器变量
名称 | 描述 |
---|---|
BUDDY_WORKERS | 包含所有已安装工作器信息的JSON |
BUDDY_WORKERS_CONCURRENT_SLOTS | 所有工作器的流水线槽总数 |
BUDDYWORKERS_COUNT${TAG} | 用${TAG} 标记的工作器数量 |
BUDDY_WORKERS_COUNT_NOT_TAGGED | 未标记工作器的数量 |
BUDDYWORKERS_FREE_SLOTS${TAG} | 标记有${TAG} 的工作器上的空闲流水线槽数 |
BUDDY_WORKERS_FREE_SLOTS_NOT_TAGGED | 所有未标记工作器的空闲流水线槽数 |
BUDDYWORKERS_AVG_LOAD${TAG} | 所有标有${TAG} 的工作器最近一分钟的平均负载 |
BUDDY_WORKERS_AVG_LOAD_NOT_TAGGED | 所有未标记工作器的最近一分钟的平均负载 |
BUDDYWORKER_ADDRESS${TAG} | 用${TAG} 标记的工作器IP地址列表 |
BUDDY_WORKER_ADDRESS_NOT_TAGGED | 未标记工作器IP地址列表 |
文件系统、静态文件与缓存
只要不满足重新分配规则,流水线连同它的缓存和文件系统就被固定到一个指定的工作器。
每当流水线切换到另一个工作器时,其缓存的内容都会被清除。因此,在新工作器上的第一次执行可能需要更长的时间,因为它需要重新下载依赖项并重新生成工件。
手动上传到文件系统的静态文件除外。静态文件存储在Buddy本地部署/自托管部署的主实例中,并在第一次运行流水线时自动下载到新工作器上。
要强制流水线在指定工作器上运行,请为工作器分配一个唯一的标签,并与该流水线独占共享该标签。
排除
排除(Draining) 意味着工作器正在完成当前的流水线运行并且不会开始任何新的流水线,包括列队。 如果您想在更新或维护之前优雅地关闭您的工作器,请使用此功能。
您可以通过检查工作器设置中的标志来将工作器标记为排除:
或者,您可以通过在安装工作器的机器上运行命令来执行此操作:
buddy update-worker --drain
要将工作器恢复到以前的状态,请运行:
buddy update-worker --flood
将工作器切换到排除模式会在其旁边产生一个相应的标签:
故障排除
如果将流水线分配给工作器时出错,您可以查看流水线执行日志的准备环境步骤以了解详细信息。
最近更新:2023/03/09