T6、Github 项目自建 gitrunner

作者: Brinnatt 分类: 小工具 发布时间: 2025-09-15 09:23

本文主要步骤来自 deepseek,有问题的部分已通过官方文档纠正,仅限于可以成功搭建,逻辑表述上并未过多考研,请读者自行甄别。

官方文档:https://docs.github.com/en/actions

本文参考:https://docs.github.com/en/actions/how-tos/manage-runners/self-hosted-runners/add-runners

为企业生产环境搭建 GitHub 自托管 Runner 需要谨慎操作。下面我为你整理了支持 amd64 和 arm64 架构的 Linux 服务器的权威安装步骤。流程和关键信息参考了 GitHub 官方文档和社区实践,力求清晰可靠。

首先,你可以通过下面的表格了解核心安装步骤:

阶段 关键任务 备注
1. 前期准备 获取 Token、准备服务器、安装依赖 权限充足的 Personal Access Token 和 glibc 等依赖很重要
2. 下载与安装 下载 Runner、解压、配置环境 注意区分 amd64 和 arm64 的下载链接
3. 注册 Runner 执行 config.sh 命令、输入 Token、选择标签 标签 (labels) 用于在 workflow 中定向选择 Runner
4. 运行与管理 以服务方式安装、启动、设置日志检查与开机自启 推荐使用 svc.sh 脚本安装为系统服务
5. 权限与安全 创建非特权用户、配置目录权限、防火墙 企业生产环境的安全加固必不可少

接下来是每个步骤的详细说明。

📋 前期准备

  1. 获取注册 Token:

    • 访问你的 GitHub 仓库 (或组织) 的 Settings -> Actions -> Runners。
    • 点击 New self-hosted runner。
    • 选择操作系统 (Linux) 和架构(x64/amd64 或 ARM64/ARM),页面会生成一个唯一的 Token。请妥善保管此 Token,它有效期很短。
  2. 服务器准备:

    • 确保你的 Linux 服务器(amd64 或 arm64 架构)可以稳定访问 GitHub。

    • 安装基础依赖,通常包括:

      # 对于基于 Debian/Ubuntu 的系统
      sudo apt-get update
      sudo apt-get install -y curl tar
      
      # 对于基于 RHEL/CentOS/Rocky 的系统
      sudo yum check-update || true
      sudo yum install -y curl tar
    • (可选但建议) 创建一个专用的非特权用户来运行 Runner,例如 github-runner:

      sudo useradd -m -d /home/github-runner -s /bin/bash github-runner

📥 下载与安装 Runner

  1. 创建目录并下载:
    在你的服务器上,依次执行以下命令。请务必将 <architecture> 替换为你的服务器架构:amd64 或 arm64。

    # 创建 runner 目录,可自定义
    mkdir actions-runner && cd actions-runner
    
    # 下载对应架构的 Runner 压缩包
    # 对于 AMD64 (x86-64) 架构:
    curl -o actions-runner-linux-x64-2.317.0.tar.gz -L https://github.com/actions/runner/releases/download/v2.317.0/actions-runner-linux-x64-2.317.0.tar.gz
    
    # 对于 ARM64 架构:
    # curl -o actions-runner-linux-arm64-2.317.0.tar.gz -L https://github.com/actions/runner/releases/download/v2.317.0/actions-runner-linux-arm64-2.317.0.tar.gz
    
    # (可选) 验证哈希值,建议生产环境进行
    # 下载哈希文件,例如对于 amd64:
    # curl -o actions-runner-linux-x64-2.317.0.tar.gz.sha256 -L https://github.com/actions/runner/releases/download/v2.317.0/actions-runner-linux-x64-2.317.0.tar.gz.sha256
    # 验证
    # echo "$(cat actions-runner-linux-x64-2.317.0.tar.gz.sha256)  actions-runner-linux-x64-2.317.0.tar.gz" | shasum -a 256 -c

    注意:Runner 版本号(此例中的 v2.317.0)会不断更新。建议前往 GitHub Actions Runner Releases 页面查看最新稳定版本,并替换下载链接中的版本号。

  2. 解压压缩包:

    # 解压
    tar xzf ./actions-runner-linux-x64-2.317.0.tar.gz

    解压后你会看到 config.sh, run.sh, bin/ 等文件和目录。

🖊️ 注册 Runner

  1. 运行配置脚本:
    使用之前从 GitHub 页面上获取的 Token 和 URL 运行配置脚本。

    ./config.sh --url https://github.com/your-organization/your-repository --token YOUR_REGISTRATION_TOKEN
    • 将 https://github.com/your-organization/your-repository 替换为你的仓库或组织的真实 URL。
    • 将 YOUR_REGISTRATION_TOKEN 替换为准备步骤中获取的 Token。
  2. 交互式配置:
    执行命令后,你会进入交互式配置流程:

    • Runner 组名称(Enter the name of the runner group):默认即可。
    • Runner 名称(Enter the name of the runner):输入一个易于标识此 Runner 的名称(如 prod-runner-linux-amd64),默认为服务器主机名。
    • Runner 标签(Enter any additional labels):你可以添加自定义标签(如 linux, prod, amd64),用逗号分隔。标签用于在 Workflow 中通过 runs-on 指定使用哪个 Runner。
    • 执行器(Enter the executor):对于生产环境,通常选择 shell(直接在主机 shell 运行)或 docker(使用 Docker 容器运行,更安全)。根据你的需求选择。

    注册成功后,你会看到 Runner successfully added 的提示。配置信息会保存在当前目录下的 .runner 文件和相关配置文件中。

🚀 运行与管理 Runner

  1. 安装为系统服务(推荐):
    为了确保 Runner 在后台稳定运行并在服务器重启后自动启动,强烈建议将其安装为系统服务。GitHub Runner 包提供了便捷的脚本:

    注意:执行完 ./config.sh --url https://github.com/brinnatt/kubeauto --token xxx 才会生成 svc.sh 脚本。

    # 安装服务(如果您创建了专用用户,请使用 --user 参数指定,如 sudo ./svc.sh install github-runner)
    sudo ./svc.sh install
    
    # 启动服务
    sudo ./svc.sh start
    
    # 查看服务状态
    sudo ./svc.sh status

    安装为服务后,Runner 会在后台持续运行并监听 GitHub 的作业任务。

    如果系统开启了selinux,启动服务会报错:

    SELinux is preventing systemd from read access on the file actions.runner.brinnatt-kubeauto.ARM64.service

    手动给服务文件打标签:

    sudo restorecon -v /etc/systemd/system/actions.runner.brinnatt-kubeauto.ARM64.service
    sudo restorecon -Rv /etc/systemd/system # 递归所有服务打标签
    sudo systemctl daemon-reload
    sudo systemctl restart actions.runner.brinnatt-kubeauto.ARM64.service
    sudo systemctl enable actions.runner.brinnatt-kubeauto.ARM64.service
  2. (可选)直接运行:
    仅用于测试或不适合安装服务的环境,可以在前台运行:

    ./run.sh

    注意:这种方式终端关闭后进程会结束。

🔒 权限与安全建议(企业生产环境必读)

  • 专用用户:如前所述,务必使用专用的非 root 用户(如 github-runner)来安装和运行服务 (sudo ./svc.sh install github-runner),遵循最小权限原则。
  • 目录权限:确保 actions-runner 目录及其文件的所有权和权限设置恰当,避免使用 sudo 运行 Runner 的命令或脚本。
  • Token 安全:注册 Token 是临时的,一旦 Runner 注册成功,服务会自动管理后续的认证。切勿泄露 Token。
  • 网络与防火墙:确保服务器能访问 github.com 以及 GitHub Actions 所需的其它网络资源(如软件包源)。根据企业安全策略配置防火墙。
  • 标签策略:为不同用途(如生产、测试)、不同架构(amd64, arm64)的 Runner 设置清晰且具有区分度的标签(labels),以便在 Workflow 中精确指定 runs-on: [self-hosted, your-specific-label]。
  • 监控与日志:Runner 的服务日志通常由 systemd 管理,可使用 journalctl -u actions.runner.service -f 等命令查看。定期检查 Runner 状态和日志。

🐛 验证与故障排除

  1. 验证:回到 GitHub 仓库的 Settings -> Actions -> Runners 页面。稍等片刻,你应该能看到新注册的 Runner,状态会从 Offline 变为 Idle(绿色),表示已就绪。

  2. 运行测试工作流:创建一个简单的 .github/workflows/test-runner.yml 文件来测试:

    name: Test Self-Hosted Runner
    on:
     workflow_dispatch: # 允许手动触发
    jobs:
     test:
       runs-on: [self-hosted, YOUR_RUNNER_LABEL] # 使用你为此 Runner 设置的标签
       steps:
         - name: Check Architecture
           run: uname -m

    推送此工作流后手动触发,如果成功,Runner 会执行作业,你可以在 GitHub 上看到输出结果(例如 aarch64 或 x86_64)。

  3. 常见问题:

    • Must not run with sudo:如果配置时遇到此错误,请确保你没有使用 root 用户执行脚本,或者设置 RUNNER_ALLOW_RUNASROOT="1" 环境变量来允许(非必要不推荐)。
    • 404 Not Found when registering:通常表示 Token 已过期。Token 有效期很短,请从 GitHub 界面获取新的 Token 并重新注册。
    • 架构不匹配:确保下载的 Runner 压缩包架构与你的服务器架构完全一致。
标签云