如题,怎么部署 Github Actions Runner ,这个简单。
难点就是:
如果让这个 Github Actions Runner 在代理服务器后面能够正常运行?
代码:( dev 分支)
github.com/snowdreamtech/alpine
Github Actions:( dev 的都是)
github.com/snowdreamtech/alpine/actions

灵光一现,顿悟了。

关键点:

  1. 宿主机搭建的本地代理服务器,监听改成 0.0.0.0 ,而不是 127.0.0.1
  2. 代理服务器的 ip ,用 172.17.0.1 ,而不是 127.0.0.1 (为什么?因为 172.17.0.1 是 docker 容器内部网关。127.0.0.1 在容器内部,指向的是容器本身,而不是宿主机)
  3. 参考下面的博客,给 Docker 配置代理服务器地址(比如: 172.17.0.1:1080)

如何优雅的给 Docker 配置网络代理
cloud.tencent.com/developer/article/1806455

主要就这些了。
困扰很久的问题,终于解决了。

这件事情的意义,在于:

  1. 你可以在境内部署 Github Actions Self-hosted Runner.
  2. 你可以去咸鱼捡那些机顶盒,矿渣(玩客云等),树莓派,等设备(只要支持 docker ),本地部署 Github Actions Self-hosted Runner 。
    3.理论上,境内的云服务器也可以部署 Github Actions Self-hosted Runner.(不清楚会不会被监管)

好了,现在 托管在 Github 的公开项目或者私有项目,可以通过 CI (持续集成),CD (持续部署) 跑起来。

开 ssh ,让我上去看看

这里有完整信息。

代码:( dev 分支) github.com/snowdreamtech/alpine

Github Actions:( dev 的都是) github.com/snowdreamtech/alpine/actions

runner 跑起来,能访问 github 不就行了。代理设置好环境变量就行了吧。

为什么要开代理,github action 本身就可以连通外网的,而且速度贼快

  1. 部署到香港,解决所有网络相关问题。
  1. 部署在国内,跟着官方的指导一步一步来,出问题把错误日志贴上来再问。

部署到境外,确实爽,一把梭,没压力。

但是我想部署在境内,比如本地的小功耗设备里面。

问题主要出在代理服务器的设置上。

正常 github action 用的是微软的设备,有时间限制的。
如果部署自己本地的主机,应该没时间限制。

我给它配了代理的环境变量,代理服务端的机器是香港的机器,这样子能用,不过隔段时间看日志能看到偶尔会断,断了之后它自己重启又能连上

用的这个镜像 github.com/myoung34/docker-github-actions-runner

别折腾了。。我折腾过。爽的时候很爽。。你急着 release 项目的时候,不好意思,连不上 github 拉代码。急死你。
所以干脆切 gitlab 了。。再不折腾 github 的网络。github 除非公司有全局梯子,自己玩还是家里玩吧,公司级的,要用的时候出问题可麻烦了

设置完 HTTP_PROXY,HTTPS_PROXY 就不会有任何问题了. 我就是部署在境内的,正常运行几年了
go 项目一般 20s 内完成
setup 2s, pull code 2s,build push image 5 s,helm 5s
基本镜像就用官方的: actions/actions-runner:2.323.0

开 tun 代理是最简单的,否则你还得分别处理 Shell, Npm, Gradle 等的代理

基本镜像就用官方的: actions/actions-runner:2.323.0

这个是哪里的?是否可以给个地址。

github.com/actions/runner/pkgs/container/actions-runner

其实更一劳永逸的解决方法是想办法在本地搭建一个无墙网络环境,所有在这个网络下的设备默认可以连接外网。
省的配置代理了,正常的部署流程中本来也不应该有这个步骤,默认你网络是畅通的

这个是最基本的,要做的事情。

下面这一步,不是必要的吗?

  1. 参考下面的博客,给 Docker 配置代理服务器地址(比如: 172.17.0.1:1080)

如何优雅的给 Docker 配置网络代理
cloud.tencent.com/developer/article/1806455

#16 对, 比如开个 surge, runner 那台机器默认就自动过墙

#16 我知道,我的意思是,我先在本地创建一个无墙的网络环境,在这个网络下的设备无需配置代理就可以直接无限制访问互联网(例如直接把梯子装路由器上,开 TUN 模式)
这样做就不用给 docker 容器或者系统中运行的任何其他服务一个个配置代理了,直接是无墙网络

#16 例如你在境外服务器上部署 docker ,难道你还需要配置代理嘛?

境外服务器,不需要任何配置,直接用。

docker 要设置,是因为 docker buildx ,要额外设置。

如何优雅的给 Docker 配置网络代理
cloud.tencent.com/developer/article/1806455

试过,但效果都不是很好,网络和性能都是问题,还有各种兼容性问题,你自己搭建的不一定和官方提供的环境一模一样。

后来使用了第三方的 Github Actions Runner 服务,比官方的性能快好几倍,有免费额度,完全够用:

www.ubicloud.com/use-cases/github-actions (amd64 arm64) 性能中上,还不错,免费 1250 分钟
www.warpbuild.com/pricing (amd64 arm64 macos windows) 为数不多的提供 windows 还有免费额度的,免费 2000 分钟
docs.blacksmith.sh/runners/pricing (amd64 arm64) 基于 Hetzner 超高性能服务器,免费 3000 分钟

确实可能遇到这样的问题。

自建的 Github Actions Runner 主要是给私有项目用的。
开源项目直接用 Github 官方的 Github Actions Runner 。