Gitea Actions(1)二进制部署
一、准备 Gitea Actions 服务器
- 首先你已经在服务器A上部署了 Gitea
- 现在准备一台服务器B,部署Gitea Actions。官方文档建议我们将Gitea和 Gitea Actions分别部署在两台服务器上。
下文简称 Gitea Actions 和 Runner 是一个意思。
参考:https://docs.gitea.com/zh-cn/next/usage/actions/act-runner
二、安装 Docker
使用 Actions 需安装 Docker
# debian/ubuntu
sudo apt update
sudo apt install docker.io
# 当前用户加入 docker 组
sudo usermod -aG docker $USER
# 注销,重新登录,让 docker 组生效
三、安装 Gitea Actions 二进制文件
下载地址:https://dl.gitea.com/act_runner/
1.登录到 Actions 服务器,创建目录并下载 Actions 二进制程序
mkdir ~/bin
cd ~/bin
wget https://dl.gitea.com/act_runner/0.2.11/act_runner-0.2.11-linux-amd64
# 重命名
mv act_runner-0.2.11-linux-amd64 act_runner
# 赋权
chmod +x act_runner
2.注册 Runner
准备 instance 和 token 信息:
- instance:你的 Gitea 服务器地址
- token:登录 Gitea 服务器 > 设置 > Actions > Runners > 创建 Runner > 复制 token

注册 Action Runner 到 Gitea 服务器:
cd ~/bin
./act_runner register --no-interactive --instance <instance> --token <token>
例如:./act_runner register --no-interactive --instance http://192.168.8.8:3000 --token YohvohSh6waena1xae9eujiephisie8eichei3Ung5uyei3w
执行成功后目录下会多出一个 .runner
文件:
$ ls -a
. .. .runner act_runner
$ cat .runner
{
"WARNING": "This file is automatically generated by act-runner. Do not edit it manually unless you know what you are doing. Removing this file will cause act runner to re-register as a new runner.",
"id": 8,
"uuid": "手动打码",
"name": "actions",
"token": "手动打码",
"address": "http://192.168.10.102:3000",
"labels": [
"ubuntu-latest:docker://gitea/runner-images:ubuntu-latest",
"ubuntu-22.04:docker://gitea/runner-images:ubuntu-22.04",
"ubuntu-20.04:docker://gitea/runner-images:ubuntu-20.04"
]
}
四、启动 Runner
cd ~/bin
./act_runner daemon
Runner 启动成功则提示
$ ./act_runner daemon
INFO[2025-04-23T23:19:03Z] Starting runner daemon
INFO[2025-04-23T23:19:03Z] runner: actions, with version: v0.2.11, with labels: [ubuntu-latest ubuntu-22.04 ubuntu-20.04], declare successfully
登录 Gitea 服务器,可以在 Acitions 中看到刚才启动的 Runner,它处于空闲状态。

五、测试 Runner
-
创建一个测试仓库:
-
在你的 Gitea 网站创建名为 test-runner 的仓库
-
初始化
-
克隆到本地
-
-
进入仓库,创建 Action 文件
test-runner/.gitea/workflow/demo.yamal
:
name: Gitea Actions 演示
run-name: ${{ gitea.actor }} 正在测试 Gitea Actions 🚀
on: [push]
jobs:
Explore-Gitea-Actions:
runs-on: ubuntu-latest
steps:
- run: echo "🎉 该任务是由 ${{ gitea.event_name }} 事件自动触发的。"
- run: echo "🐧 当前任务正在 Gitea 提供的 ${{ runner.os }} 服务器上运行!"
- run: echo "🔎 当前分支名为 ${{ gitea.ref }},仓库为 ${{ gitea.repository }}。"
- name: 检出仓库代码
uses: https://gitea.com/actions/checkout@v4
- run: echo "💡 仓库 ${{ gitea.repository }} 已被克隆到运行器中。"
- run: echo "🖥️ 工作流现在可以在运行器上测试你的代码了。"
- name: 列出仓库中的文件
run: |
ls ${{ gitea.workspace }}
- run: echo "🍏 当前任务的状态是 ${{ job.status }}。"
- run: echo "当前node和npm版本:" && npm -v && node -v
我在官方示例上做了以下修改:
汉化
在检出时,我从 gitea.com 获取检出脚本,因为默认的 github.com 太慢了。
增加了打印 node 和 npm 版本,我想看看默认 ubuntu 是否有这两个环境。
如果忽略 .git
目录,现在项目文件夹下是这样的:
$ tree -I ".git" -a
.
├── .gitea
│ └── workflows
│ └── demo.yaml
└── README.md
3.第一次 push 和观察
git add .
git commit -m "创建了Actions文件"
git push
前往你的 Gitea 网站查看 Actions 触发情况:

这里报错是因为我们的网络无法拉取 docker 镜像。解决方法:给 docker 配置加速镜像。由于本篇不是讲 docker,这里不展开讲如何配置 docker 网络,不懂可以去看 docker 的专栏笔记。
4.配置 docker 镜像加速后点击“重新运行所有任务”,这次运行成功了。以后每次 push 都会触发这个 Actions。

六、创建 Actions 服务
你是否注意到,当前只是以终端命令的方式启动 act_runner:
$ ./act_runner daemon
INFO[2025-04-23T23:19:03Z] Starting runner daemon
INFO[2025-04-23T23:19:03Z] runner: actions, with version: v0.2.11, with labels: [ubuntu-latest ubuntu-22.04 ubuntu-20.04], declare successfully
如果关闭终端,这个 Runner 将从 Gitea 网站中离线:

为了稳定使用这个 Runner,需要将 ./act_runner daemon
升级为 系统服务,并且开机自启动。
要将 ./act_runner daemon
升级为 系统服务(Systemd),你可以创建一个自定义的 systemd 服务文件。以下是完整操作步骤,假设你的 act_runner
放在 /home/youruser/act_runner
目录下。
1. 创建 systemd 服务文件
以 root
身份(或使用 sudo
)执行以下命令:
sudo nano /etc/systemd/system/act-runner.service
内容如下(请根据实际路径调整):
[Unit]
Description=Gitea Actions Runner # 服务描述
After=network.target # 等网络服务启动后再启动本服务
[Service]
Type=simple # 简单服务类型,直接运行 ExecStart 命令
User=youruser # 运行服务的用户,请替换为实际用户名
WorkingDirectory=/home/youruser/act_runner # 指定工作目录,act_runner 所在路径
ExecStart=/home/youruser/act_runner/act_runner daemon # 启动命令
Restart=always # 进程退出时自动重启
RestartSec=5 # 重启间隔 5 秒
Environment=PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin # 设置环境变量,确保系统路径可用
[Install]
WantedBy=multi-user.target # 表示在系统启动时自动加载本服务
例如,你的 act_runner 位于 /home/ubuntu/bin/act_runner
,则示例如下:
[Unit]
Description=Gitea Actions Runner
After=network.target
[Service]
Type=simple
User=ubuntu
WorkingDirectory=/home/ubuntu/bin
ExecStart=/home/ubuntu/bin/act_runner daemon
Restart=always
RestartSec=5
Environment=PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
[Install]
WantedBy=multi-user.target
📌 注意事项
User=
填你运行act_runner
的用户,避免用 root,权限太高。- 如果你用的是相对路径或不同的 Shell 环境,也可以加一行
Environment=...
来扩展环境变量。
2. 重新加载 systemd 配置
sudo systemctl daemon-reexec
sudo systemctl daemon-reload
3. 启动并设置开机自启
sudo systemctl enable --now act-runner
4. 检查运行状态
systemctl status act-runner
服务正常运行则输出:
$ sudo systemctl status act-runner.service
● act-runner.service - Gitea Actions Runner
Loaded: loaded (/etc/systemd/system/act-runner.service; enabled; preset: enab>
Active: active (running) since Thu 2025-04-24 00:57:09 UTC; 9s ago
Invocation: 4fb32e370d4e40a5a11f4ec07e7f4a1e
Main PID: 6713 (act_runner)
Tasks: 8 (limit: 4649)
Memory: 3.6M (peak: 4.4M)
CPU: 23ms
CGroup: /system.slice/act-runner.service
└─6713 /home/ubuntu/bin/act_runner daemon
此时回到你的 Gitea 网站,Runner 恢复在线(空闲):

Git Actions 并没有详细的语法介绍,不过官方文档中提示 Gitea Actions 兼容(借鉴)GitHub Actions,所以你可以使用大部分 Github Actions 语法。
学习语法之后就可以愉快的使用 Actions 完成许多自动操作啦,最常见和实用的就是 push 代码后自动发布。