Gitea Runner 的安装、注册和运行的学习实践笔记
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"
- 将 runner 下的 labels 原有值删掉后,添加
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