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

kng*_*yen 4 github-actions

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

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

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

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

我从来都不是一个网络人,所以我不太确定为什么这是可能的。但它很迷人。

Mar*_*tek 6

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