如何在本地部署 Github Actions Runner,通过代理服务器正常运行?
如题,怎么部署 Github Actions Runner ,这个简单。
难点就是:
如果让这个 Github Actions Runner 在代理服务器后面能够正常运行?
代码:( dev 分支)
github.com/snowdreamtech/alpine
Github Actions:( dev 的都是)
github.com/snowdreamtech/alpine/actions
灵光一现,顿悟了。
关键点:
- 宿主机搭建的本地代理服务器,监听改成 0.0.0.0 ,而不是 127.0.0.1
- 代理服务器的 ip ,用 172.17.0.1 ,而不是 127.0.0.1 (为什么?因为 172.17.0.1 是 docker 容器内部网关。127.0.0.1 在容器内部,指向的是容器本身,而不是宿主机)
- 参考下面的博客,给 Docker 配置代理服务器地址(比如: 172.17.0.1:1080)
如何优雅的给 Docker 配置网络代理
cloud.tencent.com/developer/article/1806455
主要就这些了。
困扰很久的问题,终于解决了。
这件事情的意义,在于:
- 你可以在境内部署 Github Actions Self-hosted Runner.
- 你可以去咸鱼捡那些机顶盒,矿渣(玩客云等),树莓派,等设备(只要支持 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 本身就可以连通外网的,而且速度贼快
- 部署到香港,解决所有网络相关问题。
- 部署在国内,跟着官方的指导一步一步来,出问题把错误日志贴上来再问。
部署到境外,确实爽,一把梭,没压力。
但是我想部署在境内,比如本地的小功耗设备里面。
问题主要出在代理服务器的设置上。
正常 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
其实更一劳永逸的解决方法是想办法在本地搭建一个无墙网络环境,所有在这个网络下的设备默认可以连接外网。
省的配置代理了,正常的部署流程中本来也不应该有这个步骤,默认你网络是畅通的
这个是最基本的,要做的事情。
下面这一步,不是必要的吗?
- 参考下面的博客,给 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 。
在实际业务中不得不遍历多个嵌套 for 循环, 如何提高嵌套 for 循环的性能 耗时太长了~ 案例: 比如一把武器 for 一个武器 in 武器库: for 弹药 in 弹夹…
又到了向大家介绍一些最近我在网上发现的有价值的东西的时候了。(下面的链接中很多都被墙) 以前向大家介绍过《一些重要的算法》和《算法和数据结构词典》,不过,你知道有些什么样比较…
刚刚给服务器配时区突然意识到,中国标准时间( China Standard Time ),和美国中部标准时间( Central Standard Time )都是 CST ,这…