Github Action 是不是支持按需自托管运行器?

Posted

技术标签:

【中文标题】Github Action 是不是支持按需自托管运行器?【英文标题】:Does Github Action supports the on-demand self-hosted runner?Github Action 是否支持按需自托管运行器? 【发布时间】:2021-02-27 13:50:53 【问题描述】:

我们需要使用 Github 操作自托管运行器,因为我们需要访问本地资源。

我知道我们可以在 VM 或 docker 容器上运行自托管运行器。

我们可以按需运行自托管运行器吗?就像 Github 托管的运行器一样,它始终使用干净的隔离 VM,并在作业执行结束时被销毁。或者像 Azure DevOps/Github 上创建干净的作业代理容器来运行管道并在最后被删除的作业代理。

我们可以用 Gihub-action 自托管运行器做类似的事情吗?例如。允许我们将虚拟机注册到 Docker 引擎或 Kubernetes 集群作为自托管运行器。当我运行 Github 工作流时,它应该启动一个容器并在该容器内运行工作流。之后,它应该删除容器。

现在可以这样做吗?我不确定是否有用于 Github 操作的路线图文档。

【问题讨论】:

Checkout github.com/evryfs/github-actions-runner-operator - 它根据需求提供跑步者。 【参考方案1】:

如果您使用 AWS,可以尝试ec2-github-runner。它完全符合您的要求。

我相信其他云提供商也可以采用相同的方法。

GitHub 本身目前不提供此类功能。

【讨论】:

这很酷,您也可以使用相同的概念来使用 Windows Docker 容器...如果您想让您的主机保持在线,在其上高效地运行大量作业,并节省如果你有一个繁忙的队列,一吨美元。【参考方案2】:

我认为这个问题有点误导,但如果我理解正确,您想要实现的是让无状态的 GitHub Actions 工作流在您的自托管运行器中运行执行。 很遗憾,目前这是不可能的。只有 GitHub 托管的跑步者才能按照您描述的方式工作。根据the documentation:

GitHub 托管的运行器始终是一个干净的隔离虚拟机,它在作业执行结束时被销毁。

您可以阅读更多关于每种跑步者类型之间的差异here。

【讨论】:

谢谢,马辛。如何改进我的问题?是的。你理解的没错。我想在我的自托管运行器 VM 上建立一个新的干净容器来运行工作流。并希望在执行后将其删除。我知道 GitHub 托管的跑步者会这样做。如果您查看 Azure DevOps 或 Gitlab,运行程序是一个干净的容器,并且在执行后被销毁。我正在寻找一种方法来对自托管跑步者做同样的事情。 也许你想结帐github.com/evryfs/github-actions-runner-operator?

以上是关于Github Action 是不是支持按需自托管运行器?的主要内容,如果未能解决你的问题,请参考以下文章

GitHub 操作自托管运行器如何工作?

Docker 中的 Docker | Github 操作 - 自托管运行器

GitHub 自托管运行器可以访问单独虚拟网络后面的 Azure 资源

自托管 GitHub Actions 运行器的 GitHub API 权限名称?

如何在 GitHub Actions 的自托管运行器上修复“GitHub.Services.OAuth.VssOAuthTokenRequestException”

如何使用输入变量来指定 GitHub 操作将在哪个自托管运行器上运行?