我目前正在尝试使用在 Ubuntu VM 上运行的自托管 GitHub Actions Runner 配置启用了 GitHub Actions 的 GitHub 存储库。
我想将我的应用程序部署到运行 GitHub Runner 的同一虚拟机。
这可能吗?这是可取的吗?
这可能吗?
是的,这是可能的。
这样可取吗?
完全不建议。 GitHub 操作可能会在运行器上执行任意代码,这是潜在拉取请求的一部分。
在大多数情况下,运行者都配置有管理权限,以便能够安装工作流程可能需要的包。当然,这不是一个硬性要求。您可以让工作流程以没有
sudo
权限的普通用户身份运行,但这会限制其实用性。
您还可以在运行工作流之前需要批准,但是一旦您运行它,它仍然会在您运行应用程序的同一台计算机上执行该 PR 中的代码。
如果目标是使用 github 操作在服务器上部署您的应用程序,您可能需要查看 github 部署。
话虽如此,您可以使用以下选项:
上述所有问题都可以通过在容器或虚拟机内使用临时运行器来解决。这样做会在安全和资源边界方面给您带来一些隔离。
大多数情况下应该使用临时运行器。这些运行器仅运行一项作业,之后它们将从 GitHub 中删除,并且必须添加新的运行器。
这可确保您每次都获得一个干净的工作流程环境,并且它们与任何其他系统隔离,从而限制运行任意代码的潜在安全影响。
然而,短暂的跑步者可能很难管理。它们需要使用某种自动缩放器来侦听来自 GitHub 的工作流事件,并通过启动临时运行器来做出反应,并在工作完成时降低其皮重。
幸运的是,这方面有几种选择:
无论您最终使用哪种选项,它都应该比运行持久运行器安全得多,尤其是在您托管应用程序的同一系统上。