跳到主要内容

部署Gitea Actions(二进制版)

Gitea Actions 类似 Github Actions ,能够帮助我们建立自动化工作流。例如,当我们提交代码到 Gitea 服务器时,自动触发构建和发布网站的脚本。

参考:Gitea 官方文档 | Actions

Gitea Actions 有时也称做 Runner 。

一、准备 Gitea Actions 服务器

建议将 Actions 运行在独立的服务器上。

二、安装 Docker

使用 Actions 需安装 Docker

# debian/ubuntu
sudo apt update
sudo apt install docker.io

# 当前用户加入 docker 组
sudo usermod -aG docker $USER

# 注销,重新登录,让 docker 组生效

三、下载 Runner

第一步,登录到 Actions 服务器,创建目录

mkdir ~/bin && cd ~/bin

第二步,下载 act_runner 二进制程序(下载地址

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

四、注册 Runner

进入 act_runner 目录,运行注册命令:

./act_runner register --no-interactive --instance <instance> --token <token>

#例如
# ./act_runner register --no-interactive --instance http://192.168.8.8:3000 --token YohvohSh6waena1xae9eujiephisie8eichei3Ung5uyei3w

instance 是 Gitea 服务器地址,token 从 Gitea 服务器的 Runner 复制。

runner

执行成功后目录下会多出一个 .runner 文件。

.runner 示例

四、启动 Runner

运行命令,启动 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

登录 Gitea 服务器,可以在 Acitions 中看到刚才启动的 Runner,它处于空闲状态。

image-20250423220721990

五、测试 Runner

第一步,回到个人电脑,准备一个托管到 Gitea 服务器的仓库。

第二步,进入仓库根目录,创建 Actions 文件,创建测试脚本:

mkdir -p .gitea/workflow
touch .gitea/workflow/demo.yamal

第三步,编辑 actions 脚本,

vim .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

[!NOTE]

脚本中的 on:规定了每次 push 都会执行这个脚本。runs-on:规定了脚本运行在 docker 版的 ubuntu 系统。steps:打印一些环境变量。

第四步,运行 git push 提交仓库并观察脚本运行情况

git add .
git commit -m "创建了Actions文件"
git push

成功的输出:

image-20250424083508777

失败的输出:

image-20250424081825656

[!note]

失败是因为网络无法拉取 docker 镜像。给 docker 配置加速镜像可以解决。

六、创建 Actions 服务

回到 Actions 服务器,你是否注意到,当前只是以终端命令的方式启动 act_runner:

$ ./act_runner daemon

如果关闭终端,这个 Runner 将从 Gitea 网站中离线:

image-20250424084446862

为了稳定使用这个 Runner,需要将 ./act_runner daemon 升级为 系统服务,并且开机自启动。


第一步,创建 systemd 服务文件,

sudo nano /etc/systemd/system/act-runner.service

贴入内容(请根据实际路径调整):

[Unit]
Description=Gitea Actions Runner
After=network.target

[Service]
Type=simple
User=ubuntu # 运行服务的用户,请替换为实际用户名
WorkingDirectory=/home/ubuntu/bin # 指定工作目录,act_runner 所在路径
ExecStart=/home/ubuntu/bin/act_runner daemon # 启动命令
Restart=always
RestartSec=5

[Install]
WantedBy=multi-user.target

[!note]

User= 填你运行 act_runner 的用户,避免用 root,权限太高。


第二步,重新加载 systemd 配置

sudo systemctl daemon-reexec
sudo systemctl daemon-reload

第三步,启动并设置开机自启

sudo systemctl enable --now act-runner

第四步,检查运行状态

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 恢复在线(空闲):

image-20250424090403304

七、Gitea Actions 语法

在 Gitea 官方文档中并没有列出详细的 Actions 语法,只是说:基本兼容 GitHub Actions 语法 ,并指出 不兼之处