马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?注册
×
当在多个项目或群组有一些共通性构建需求的项目时,分别在每个项目注册runner就比较繁琐,可以在群组或者实例级别注册共享runner,供整个群组或者整个实例使用。下面介绍一下他们的调度算法。
共享 runner 通过使用公平使用队列来处理作业。此队列可防止项目创建数百个作业并使用所有可用的共享 runner 资源。
公平使用队列算法根据已在共享 runner 上运行的作业数量最少的项目分配作业。
例如,以下作业在队列中:
- Job 1 for Project 1
- Job 2 for Project 1
- Job 3 for Project 1
- Job 4 for Project 2
- Job 5 for Project 2
- Job 6 for Project 3
当几个 CI/CD 作业同步运行,公平使用算法按以下顺序分配作业:
- Job 1 排在第一位,因为它在没有运行作业的项目(即所有项目)中具有最低的作业编号。
- 接下来是 Job 4,因为 4 现在是没有运行作业的项目中的最低作业编号(项目 1 有作业正在运行)。
- 接下来是 Job 6,因为 6 现在是没有运行作业的项目中的最低作业编号(项目 1 和 2 有作业正在运行)。
- 接下来是 Job 2,因为在运行作业数量最少的项目中(每个项目都有 1),它是作业编号最少的项目。
- 接下来是 Job 5,因为项目 1 现在有 2 个作业正在运行,而 Job 5 是项目 2 和 3 之间剩余的最低作业编号。
- 最后是 Job 3,因为它是唯一剩下的作业。
当每次运行一个作业,公平使用算法按以下顺序分配作业:
- 首先选择 Job 1,因为它在没有运行作业的项目(即所有项目)中具有最低的作业编号。
- 我们完成 Job 1。
- 接下来是 Job 2,因为在完成 Job 1 后,所有项目都有 0 个作业再次运行,而 2 是可用的最低作业编号。
- 接下来是 Job 4,因为在项目 1 运行作业的情况下,4 是未运行作业的项目(项目 2 和 3)中的最低数字。
- 我们完成 Job 4。
- 接下来是 Job 5,因为完成了 Job 4,项目 2 没有再次运行作业。
- 接下来是 Job 6,因为项目 3 是唯一没有运行作业的项目。
- 最后我们选择 Job 3,它是唯一剩下的作业。
|