1.Runner概念
1.和其他CI/CD解决方案一样,Gitea不会自己运行Job,而是将Job委托给Runner。 Gitea Actions的Runner被称为act runner,它是一个独立的程序,也是用Go语言编写的。 它是基于nektos/act的一个分支 。
2.Gitea Actions需要act runner 来运行Job。 为了避免消耗过多资源并影响Gitea实例,建议您在与Gitea实例分开的机器上启动Runner。
3.官方文档: https://docs.gitea.cn/usage/actions/quickstart
2.快速入门
从1.21.0开始,默认情况下,Actions是启用的。如果您正在使用1.21.0之前的版本,您需要将以下内容添加到配置文件中以启用它:
sh
[actions]
ENABLED=true
3.下载Runner
3.1.地址:https://dl.gitea.com/act_runner/0.2.13/
3.2.根据系统类型选择,文中使用: act_runner-0.2.13-linux-amd64
4.注册Runner
4.1在运行Runner之前,您需要使用以下命令将其注册到Gitea实例中:
bash
./act_runner register --no-interactive --instance <instance> --token <token>
需要两个必需的参数:instance 和 token。
参数1 : instance是您的Gitea实例的地址,如http://192.168.8.8:3000或https://gitea.com。 Runner和Job容器(由Runner启动以执行Job)将连接到此地址。 这意味着它可能与用于Web访问的ROOT_URL不同。 使用回环地址(例如 127.0.0.1 或 localhost)是一个不好的选择。 如果不确定使用哪个地址,通常选择局域网地址即可。
参数2 : token用于身份验证和标识,例如P2U1U0oB4XaRCi8azcngmPCLbRpUGapalhmddh23。 它只能使用一次,并且不能用于注册多个Runner。 您可以从以下位置获取不同级别的token,从而创建出相应级别的runner
-
实例级别:管理员设置页面,例如
<your_gitea.com>/admin/actions/runners。 -
组织级别:组织设置页面,例如
<your_gitea.com>/<org>/settings/actions/runners。 -
存储库级别:存储库设置页面,例如
<your_gitea.com>/<owner>/<repo>/settings/actions/runners。
4.2 运行注册之后,检查gitea控制台设置中的Runner会新增一个
bash
root@snp:/home/gitea_runner# ./act_runner register --no-interactive --instance http://192.168.1.40:8999/ --token Q1zxdj3b4WpHcC9nLBMKEVR2eZMfBenE3YSUpZjx
INFO Registering runner, arch=amd64, os=linux, version=v0.2.13.
INFO Runner name is empty, use hostname 'snp'.
DEBU Successfully pinged the Gitea instance server
INFO Runner registered successfully.

5.运行Runner
5.1 执行 ./act_runner daemon 或后台启动 nohup ./act_runner daemon & 注意文件是否有执行权限 chmod +x ./act_runner
bash
root@snp:/home/gitea_runner# ./act_runner daemon
INFO[2026-01-30T09:20:18+08:00] Starting runner daemon
INFO[2026-01-30T09:20:18+08:00] runner: snp, with version: v0.2.13, with labels: [ubuntu-latest ubuntu-24.04 ubuntu-22.04], declare successfully
5.2 启动后控制台离线变为空闲,说明已经启动

6.使用Actions
即使对于启用了Gitea实例的Actions,存储库仍默认禁用Actions。
要启用它,请转到存储库的设置页面,例如your_gitea.com/<owner>/repo/settings,然后启用(启用 Actions)Enable Repository Actions。
7.编写工作流文件
7.1 GO项目的工作流示例
yml
# 工作流名称
name: Go YL项目 CI/CD
# 指定当main分支提交时触发
on:
push:
branches: [main]
# 指定环境变量(项目名,项目部署位置等,根据自己需要来)
env:
PROJECT_NAME: "elderly_care_serve"
DEPLOY_PATH: "/home/ProjectSpace/elderly_care/server"
jobs:
build-and-deploy:
# 使用自己的runner的标签:ubuntu-latest
runs-on: ubuntu-latest
steps:
# 1. 拉取代码
- name: 检出代码
uses: actions/checkout@v4
# 2. 设置 Go 环境
- name: 设置 Go
uses: actions/setup-go@v4
with:
go-version: "1.21"
# 3. 下载依赖
- name: 下载依赖
run: |
go env -w GOPROXY=https://goproxy.cn,direct
go mod download
go mod tidy
# 4. 编译
- name: 编译项目
run: |
CGO_ENABLED=0 GOOS=linux GOARCH=amd64 \
go build -o ${{ env.PROJECT_NAME }} main.go
# 5. 部署文件
- name: 复制到部署目录
run: |
# 创建目录(如果不存在)
sudo mkdir -p ${{ env.DEPLOY_PATH }}
# 复制文件
sudo cp ${{ env.PROJECT_NAME }} ${{ env.DEPLOY_PATH }}/
# 6. 构建 Docker 注意:build_docker.sh 是自己写的部署到docker的脚本,也可以直接写docker命令部署
- name: 构建 Docker 镜像
run: |
cd ${{ env.DEPLOY_PATH }}
sudo chmod +x build_docker.sh
sudo ./build_docker.sh
7.2将以上工作流文件上传为一个以.yaml扩展名的文件,放在存储库的.gitea/workflows/目录中
7.3推送项目到gitea

7.4检查推送激活状态,等待运行结束即自动部署成功
