Gitea Runner 的安装、注册和运行的学习实践笔记

2026-09-25
2分钟阅读时长

Gitea Runner 是 Gitea Actions 的代理,用于运行构成 CI/CD 流水线的各项任务,它监听从 Gitea 服务器分派的任务,并在配置的环境中运行这些任务。每当有代码提交或拉取请求发生时,运行器就会立即投入工作,并就变更带来的影响提供即时反馈。它与我们自托管的 Gitea 相配合,完成原本由 Jenkins 完成的工作。

Gitea Runner 的安装

在 Rocky Linux 9.x 下,安装 Gitea Runner

  • 从 https://dl.gitea.com/gitea-runner/ - 选择相应版本的 Runner 下载(预编译的)
    • 当前选择 0.6.1 ,选择 act_runner-0.6.1-linux-amd64
  • 将下载的文件重命名为 act_runner ,复制到 /usr/local/bin 目录 ,并添加可执行属性:
    • # mv act_runner-0.6.1-linux-amd64 /usr/local/bin/act_runner
    • # cd /usr/local/bin
    • # chmod +x act_runner
    • # chown root:root act_runner

Gitea Runner 的实例注册

  • 创建工作目录

    • $ mkdir /data/runner/<runner name>
  • 注册 runner 实例

    • $ cd /data/runner/<runner name>
    • $ /usr/local/bin/act_runner register --no-interactive --instance <gitea instance> --token <runner token> --name <runner name> --labels linux_amd64:host
    • 填入 gitea 的访问地址,比如: http://192.168.1.88:3000
    • 通过版本库的设置页面,左侧菜单的“工作流”(Actions)下的“运行器”(Runners)设置页面,点击“创建新运行器”来获得。
    • 给 runner 取一个名字,可用版本库的名称
    • –labels linux_amd64:host 这是标签,运行本地的标签
    • 注册完成后,会在当前工作目录生成一个 .runner 文件
  • 生成配置文件

    • $ cd /etc/gitea-runner/conf.d - 如果没有该目录,先创建。
    • $ /usr/local/bin/act_runner generate-config > <runner name>.yaml - 在当前配置目录会得到一个配置文件 .yaml
    • $ vim <runner name>.yaml - 根据需求修改该 .yaml 文件
      • 将 runner 下的 labels 原有值删掉后,添加 - "linux_amd64:host" 表示本机运行 runner
      • 将 cache 下的 dir 的值修改为相应的工作目录,比如: “/data/runner//actcache”
      • 将 host 下的 workdir_parent 的值修改为相应的工作目录,比如:"/data/runner//act"

Gitea Runner 的实例运行

  • 给 Runner 实例创建启动控制脚本
    • # cd /usr/lib/systemd/system/
    • # vim gitea-runner-<runner name>.service
    • 其文件内容如下(供参考):
[Unit]
Description=Gitea Actions runner for xxxx
Documentation=https://gitea.com/gitea/runner
# After=docker.service

[Service]
Environment=PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin
ExecStart=/usr/local/bin/act_runner daemon --config /etc/gitea-runner/conf.d/<runner name>.yaml
ExecReload=/bin/kill -s HUP $MAINPID
WorkingDirectory=/data/runner/<runner name>
TimeoutSec=0
RestartSec=10
Restart=always
User=admin

[Install]
WantedBy=multi-user.target
  • 启动 runner 守护进程:
# systemctl daemon-reload
# systemctl start gitea-runner-<runner name>

如果同一台服务器上,需要安装运行多个 Gitea Action Runner 实例,重复以上的实例注册和实例运行步骤即可。

将 actions/checkout 镜像到本地

在国内实际应用 gitea runner 时,编写的 workflows 运行脚本中,会用到 Actions/checkout 组件来获取版本库代码,不过,直接使用 gitea.com 的,可能会因为网络问题,导致组件获取失败,从而影响代码的签出,从而运行任务的顺利完成,所以,可以将该组件库代码在自托管的 Gitea 中镜像一份,从而能在自己编写的 workflows 脚本中,用到自托管环境中组件代码,避免网络问题影响任务的顺利完成。以下为镜像的步骤:

  • 在自托管 Gitea 实例中,创建一个组织,名称为 Actions ,可见性设置为公开
  • 在该组织中,选择“迁移外部仓库”,选择 Gitea ,在 从 URL 迁移/克隆中,填入:
  • 迁移完成后,即可得到一个本地实例的镜像库
  • 另外,注意,在自托管 Gitea 实例的 app.ini 文件中,可能需要修改 REQUIRE_SIGNIN_VIEW = false
Avatar

JeffWu Author

数十年互联网从业经验,互联网全栈开发工程师,资深技术管理人员,资深游戏开发工程师。具有丰富的搭建海量数据处理系统的经验,大容量、高并发、高可靠线上运营系统的搭建和维护的丰富经验。