github-actions - GitHub 操作自托管运行器如何工作?
问题描述
我刚刚了解了 GitHub Actions,我认为它非常棒。
一开始让我印象深刻的一件事是,当我设置自托管运行器时,GitHub 要求我在我的本地机器上运行一堆命令,这显然是在私有网络中并且它没有暴露在互联网上(入站- 意味着 www 无法访问它)。
但是,在安装了 GitHub 要求我安装的内容后,似乎一个 webhook 设置成功,每次推送/合并到我的主人(在 GitHub 操作文件中设置)时,我电脑上的工作人员都知道并开始拉最新的repo 的版本并开始安装依赖项和其他 CI/CD 内容。
现在我很好奇的是,当我的虚拟机在私有网络中时,GitHub 是如何与我的虚拟机对话的?
我从来都不是网络人,所以我不太确定为什么会这样。但这很迷人。
解决方案
不是 GitHub 连接到您的自托管运行器(入站),而是自托管运行器本身连接到 GitHub(出站)。这就是它起作用的原因。这是您的虚拟机(与专用网络中的运行器)与 GitHub 通信。通讯方向反了. 在您的自托管运行器连接到 GitHub 后,双方都会保持连接打开。这允许所有事件通过 Github 存储库的连接推送到您的跑步者,如果发生某些事情(PR 已打开,提交已完成等......)。流道运行时,连接保持打开状态。当然,如果网络出现问题并且连接中断,则通信将停止工作。要解决此问题,运行程序会定期向 GitHub 发送 ping 数据包以验证连接是否正常,如果不正常则尝试重新连接。
推荐阅读
- typescript - 模拟一个班级,然后开玩笑地取消模拟它
- dropbox - 有没有办法在桌面应用程序中打开 Dropbox 链接?
- c# - 需要通过在c#中循环列表来创建自定义对象是否可能
- mysql - Mysql SELECT 查询 group by 与 sum 和 avg
- spring-boot - Spring boot 2.4 Neo4j 6.0 Null 值映射到布尔原语已更改
- java - Web 应用程序的 xBased 64 部署问题
- math - 模糊数的乘法 (a> 0, b <0)
- c# - Image.FromFile("image_path") 抛出一些 JPEG 文件的内存不足异常
- java - 如何对齐 JPanel 在另一个 JPanel 下方居中?
- php - ErrorException 数组到字符串的转换 Laravel - 将 JSON 导入 MySQL