V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
• 请不要在回答技术问题时复制粘贴 AI 生成的内容
sn0wdr1am
V2EX  ›  程序员

如何在本地部署 Github Actions Runner,通过代理服务器正常运行?

  •  
  •   sn0wdr1am · 1 天前 · 1146 次点击

    如题,怎么部署 Github Actions Runner ,这个简单。

    难点就是:

    如果让这个 Github Actions Runner 在代理服务器后面能够正常运行?

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

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

    第 1 条附言  ·  1 天前
    灵光一现,顿悟了。

    关键点:

    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 配置代理服务器地址(比如: http://172.17.0.1:1080)

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

    主要就这些了。
    困扰很久的问题,终于解决了。
    第 2 条附言  ·  23 小时 58 分钟前
    这件事情的意义,在于:

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

    好了,现在 托管在 Github 的公开项目或者私有项目,可以通过 CI (持续集成),CD (持续部署) 跑起来。
    23 条回复    2025-04-03 10:31:25 +08:00
    defunct9
        1
    defunct9  
       1 天前
    开 ssh ,让我上去看看
    sn0wdr1am
        2
    sn0wdr1am  
    OP
       1 天前
    @defunct9

    这里有完整信息。

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

    Github Actions:( dev 的都是) https://github.com/snowdreamtech/alpine/actions
    defunct9
        3
    defunct9  
       1 天前
    runner 跑起来,能访问 github 不就行了。代理设置好环境变量就行了吧。
    lomtom
        4
    lomtom  
       1 天前
    为什么要开代理,github action 本身就可以连通外网的,而且速度贼快
    l4ever
        5
    l4ever  
       1 天前
    1. 部署到香港,解决所有网络相关问题。
    2. 部署在国内,跟着官方的指导一步一步来,出问题把错误日志贴上来再问。
    sn0wdr1am
        6
    sn0wdr1am  
    OP
       1 天前
    @l4ever
    部署到境外,确实爽,一把梭,没压力。

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

    问题主要出在代理服务器的设置上。
    sn0wdr1am
        7
    sn0wdr1am  
    OP
       1 天前
    @lomtom 正常 github action 用的是微软的设备,有时间限制的。
    如果部署自己本地的主机,应该没时间限制。
    Mystery0
        8
    Mystery0  
       1 天前

    我给它配了代理的环境变量,代理服务端的机器是香港的机器,这样子能用,不过隔段时间看日志能看到偶尔会断,断了之后它自己重启又能连上
    Mystery0
        9
    Mystery0  
       1 天前
    sampeng
        10
    sampeng  
       1 天前
    别折腾了。。我折腾过。爽的时候很爽。。你急着 release 项目的时候,不好意思,连不上 github 拉代码。急死你。
    所以干脆切 gitlab 了。。再不折腾 github 的网络。github 除非公司有全局梯子,自己玩还是家里玩吧,公司级的,要用的时候出问题可麻烦了
    buffzty
        11
    buffzty  
       1 天前
    设置完 HTTP_PROXY,HTTPS_PROXY 就不会有任何问题了. 我就是部署在境内的,正常运行几年了
    go 项目一般 20s 内完成
    setup 2s, pull code 2s,build push image 5 s,helm 5s
    基本镜像就用官方的: actions/actions-runner:2.323.0
    Goooler
        12
    Goooler  
       1 天前
    开 tun 代理是最简单的,否则你还得分别处理 Shell, Npm, Gradle 等的代理
    sn0wdr1am
        13
    sn0wdr1am  
    OP
       1 天前
    @buffzty

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

    这个是哪里的?是否可以给个地址。
    moefishtang
        15
    moefishtang  
       1 天前
    其实更一劳永逸的解决方法是想办法在本地搭建一个无墙网络环境,所有在这个网络下的设备默认可以连接外网。
    省的配置代理了,正常的部署流程中本来也不应该有这个步骤,默认你网络是畅通的
    sn0wdr1am
        16
    sn0wdr1am  
    OP
       1 天前
    @moefishtang
    这个是最基本的,要做的事情。

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

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

    如何优雅的给 Docker 配置网络代理
    https://cloud.tencent.com/developer/article/1806455
    wind1986
        17
    wind1986  
       1 天前
    @moefishtang
    @sn0wdr1am #16 对, 比如开个 surge, runner 那台机器默认就自动过墙
    moefishtang
        18
    moefishtang  
       23 小时 51 分钟前
    @sn0wdr1am #16 我知道,我的意思是,我先在本地创建一个无墙的网络环境,在这个网络下的设备无需配置代理就可以直接无限制访问互联网(例如直接把梯子装路由器上,开 TUN 模式)
    这样做就不用给 docker 容器或者系统中运行的任何其他服务一个个配置代理了,直接是无墙网络
    moefishtang
        19
    moefishtang  
       23 小时 50 分钟前
    @sn0wdr1am #16 例如你在境外服务器上部署 docker ,难道你还需要配置代理嘛?
    sn0wdr1am
        20
    sn0wdr1am  
    OP
       23 小时 28 分钟前
    @moefishtang 境外服务器,不需要任何配置,直接用。
    sn0wdr1am
        21
    sn0wdr1am  
    OP
       23 小时 27 分钟前
    @moefishtang docker 要设置,是因为 docker buildx ,要额外设置。

    如何优雅的给 Docker 配置网络代理
    https://cloud.tencent.com/developer/article/1806455
    zhaojun1998
        22
    zhaojun1998  
       6 小时 21 分钟前
    试过,但效果都不是很好,网络和性能都是问题,还有各种兼容性问题,你自己搭建的不一定和官方提供的环境一模一样。

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

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

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

    自建的 Github Actions Runner 主要是给私有项目用的。
    开源项目直接用 Github 官方的 Github Actions Runner 。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   5283 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 21ms · UTC 07:55 · PVG 15:55 · LAX 00:55 · JFK 03:55
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.