在多个仓库上重复使用 Github Actions 自托管 runner

28

我在自己的服务器上运行了一个自托管的Github Actions runner,用于我的一个仓库。但现在我想将同样的runner用于另一个仓库。

有没有一种方法,可以重新使用同一个Github Actions runner,而无需创建新的runner?

4个回答

17

更新:

从2020年4月22日起,您现在可以跨组织共享Runner。 这允许您组织内的存储库使用那些Runner。

https://github.blog/2020-04-22-github-actions-community-momentum-enterprise-capabilities-and-developer-improvements/#share-self-hosted-runners-across-an-organization

旧答案:

根据Github合作伙伴的说法,目前还无法实现此功能:

目前,我们没有方法可以跨存储库使用自托管的Runner,并且也没有在组织级别上添加自托管的Runner的选项。

来源:https://github.community/t5/GitHub-Actions/Can-one-Github-Actions-self-hosted-runner-work-for-multiple/td-p/41465


@SameerRezaKhan,有一个解决方法。https://github.community/t5/GitHub-Actions/Self-hosted-runners-specific-to-repository/m-p/48482/highlight/true#M7182。不过这并不是很好的解决方案。 - rickh
1
@SameerRezaKhan 这现在已经得到官方支持了。我已经更新了我的回答。 - Steven
1
有人知道关于如何利用新的共享自托管 runner 的能力完成这个任务的好文章/博客吗?我看过那篇文章,但仍然不确定如何实现。 - BJ McDuck
1
@BrandonMcKay 您只需创建/使用您的组织(免费)并向其添加自托管的 runner(通过组织设置)。 - Steven
1
有没有办法对不属于任何组织的个人仓库做同样的事情? - floatingpurr
显示剩余4条评论

7

如果您想知道我是怎么解决这个问题的,我在我的服务器上安装了多个不同名称的GitHub Runner。虽然不是最好的解决方案,但现在只有这个方案没有任何脏工作可以做...


说实话,这不是一个糟糕的方法。如果您的存储库是独占的,也就是说,您可以同时运行多个运行程序而不会有任何冲突(例如node、yarn、bundler等),那么我认为这是唯一的方法。如果您希望/需要运行程序一次只运行一个作业(对于任何存储库),那么最好的方法是将其设置为组织运行程序,并使其为多个存储库提供服务。如果我错了,请纠正我! :) - Joshua Pinter

5
我们正在使用在AWS spot实例上自动扩展自托管的github action runner。我们已经开源了它:https://github.com/philips-labs/terraform-aws-github-runner。 其中一位创建者撰写了一篇博客文章,介绍了一些运作方式: https://040code.github.io/2020/05/25/scaling-selfhosted-action-runners 。 一旦Runner处于活动状态,它可以从各个存储库中获取多个构建。一段时间后,空闲的runner将被终止。当触发新的工作流时,github应用程序将创建一个新的runner,并且该runner将接手处理工作。

3

现在组织账户可以创建一个 GitHub Runner,并在所有仓库中使用它。

enter image description here


1
有没有办法让个人账户完成这个任务?我是一个独立的开发者,拥有自己的自托管 Runner! - Luke Pighetti
@LukePighetti 如果你是一个独行侠,那么使用默认组的组织级别操作运行程序应该能够满足你的需求。因为在这种情况下没有权限问题。 - vilicvane

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接