首页 > 解决方案 > GitHub 操作自托管运行器如何工作?

问题描述

我刚刚了解了 GitHub Actions,我认为它非常棒。

一开始让我印象深刻的一件事是,当我设置自托管运行器时,GitHub 要求我在我的本地机器上运行一堆命令,这显然是在私有网络中并且它没有暴露在互联网上(入站- 意味着 www 无法访问它)。

但是,在安装了 GitHub 要求我安装的内容后,似乎一个 webhook 设置成功,每次推送/合并到我的主人(在 GitHub 操作文件中设置)时,我电脑上的工作人员都知道并开始拉最新的repo 的版本并开始安装依赖项和其他 CI/CD 内容。

现在我很好奇的是,当我的虚拟机在私有网络中时,GitHub 是如何与我的虚拟机对话的?

我从来都不是网络人,所以我不太确定为什么会这样。但这很迷人。

标签: github-actions

解决方案


不是 GitHub 连接到您的自托管运行器(入站),而是自托管运行器本身连接到 GitHub(出站)。这就是它起作用的原因。这是您的虚拟机(与专用网络中的运行器)与 GitHub 通信。通讯方向反. 在您的自托管运行器连接到 GitHub 后,双方都会保持连接打开。这允许所有事件通过 Github 存储库的连接推送到您的跑步者,如果发生某些事情(PR 已打开,提交已完成等......)。流道运行时,连接保持打开状态。当然,如果网络出现问题并且连接中断,则通信将停止工作。要解决此问题,运行程序会定期向 GitHub 发送 ping 数据包以验证连接是否正常,如果不正常则尝试重新连接。


推荐阅读