Gitea Actions:自托管CI/CD实战
2026-02-04 04:06:24作者:郁楠烈Hubert
痛点与承诺
还在为CI/CD(持续集成/持续部署)服务的高昂费用和网络延迟烦恼吗?还在担心代码安全性和数据隐私问题吗?Gitea Actions为你提供了完美的解决方案——完全自托管的CI/CD工作流,让你在私有环境中享受GitHub Actions级别的自动化体验!
读完本文,你将掌握:
- ✅ Gitea Actions核心架构与工作原理
- ✅ 从零搭建自托管Runner的完整流程
- ✅ 实战编写高效的工作流配置文件
- ✅ 高级技巧:缓存优化、矩阵构建、自定义Action
- ✅ 企业级部署最佳实践与故障排除
Gitea Actions架构解析
Gitea Actions采用与GitHub Actions兼容的架构设计,主要由三个核心组件构成:
flowchart TD
A[Gitea Server] --> B[Workflow YAML文件]
B --> C[Actions调度器]
C --> D[自托管Runner]
D --> E[执行环境<br>Docker/本地]
E --> F[构建结果]
F --> G[状态反馈]
G --> A
核心组件说明
| 组件 | 职责 | 部署位置 |
|---|---|---|
| Gitea Server | 工作流定义存储与调度 | 主服务器 |
| Act Runner | 任务执行引擎 | 任意节点 |
| 工作流文件 | CI/CD流程定义 | 代码仓库 |
环境准备与Runner部署
系统要求
- Gitea版本:≥1.19.0(推荐最新稳定版)
- Runner节点:Linux/Windows/macOS,Docker环境
- 网络:Runner与Gitea服务器双向可达
安装Act Runner
# 下载最新版Runner
wget https://dl.gitea.com/act_runner/releases/download/v0.2.6/act_runner-0.2.6-linux-amd64 -O act_runner
chmod +x act_runner
sudo mv act_runner /usr/local/bin/
# 注册Runner到Gitea实例
act_runner register \
--instance https://your-gitea-domain.com \
--token YOUR_RUNNER_TOKEN \
--name my-runner \
--labels ubuntu-latest,docker
配置详解
创建Runner配置文件 config.yaml:
log:
level: info
runner:
file: .runner
capacity: 10
fetch_timeout: 5s
fetch_interval: 2s
cache:
enabled: true
dir: ""
host: ""
port: 0
ssl: false
container:
network: bridge
privileged: false
options:
workdir: /tmp/act
userns: ""
host:
workdir: /tmp/act
http:
address: :8080
tls: false
cert: ""
key: ""
工作流编写实战
基础工作流示例
创建 .gitea/workflows/ci.yml:
name: Go CI Pipeline
on:
push:
branches: [ main, develop ]
pull_request:
branches: [ main ]
jobs:
test:
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v4
- name: Set up Go
uses: actions/setup-go@v5
with:
go-version: '1.21'
- name: Install dependencies
run: go mod download
- name: Run tests
run: go test -v ./...
- name: Build binary
run: go build -o myapp .
docker-build:
runs-on: ubuntu-latest
needs: test
steps:
- name: Checkout code
uses: actions/checkout@v4
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v3
- name: Login to容器仓库
uses: docker/login-action@v3
with:
username: ${{ secrets.CONTAINER_REGISTRY_USERNAME }}
password: ${{ secrets.CONTAINER_REGISTRY_TOKEN }}
- name: Build and push
uses: docker/build-push-action@v5
with:
context: .
push: true
tags: user/app:latest
高级特性:矩阵构建
jobs:
test-matrix:
runs-on: ubuntu-latest
strategy:
matrix:
go-version: [1.20, 1.21, 1.22]
platform: [linux/amd64, linux/arm64]
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Set up Go ${{ matrix.go-version }}
uses: actions/setup-go@v5
with:
go-version: ${{ matrix.go-version }}
- name: Test on ${{ matrix.platform }}
run: go test ./...
缓存优化策略
steps:
- name: Cache Go modules
uses: actions/cache@v3
with:
path: |
~/.cache/go-build
~/go/pkg/mod
key: ${{ runner.os }}-go-${{ hashFiles('**/go.sum') }}
restore-keys: |
${{ runner.os }}-go-
- name: Cache node modules
uses: actions/cache@v3
with:
path: node_modules
key: ${{ runner.os }}-node-${{ hashFiles('**/package-lock.json') }}
restore-keys: |
${{ runner.os }}-node-
企业级最佳实践
安全配置
# 限制Runner权限
runner:
capacity: 5
container:
privileged: false
network: bridge
# 使用安全密钥
env:
CONTAINER_REGISTRY_TOKEN: ${{ secrets.CONTAINER_REGISTRY_TOKEN }}
SLACK_WEBHOOK: ${{ secrets.SLACK_WEBHOOK }}
监控与日志
# 查看Runner状态
act_runner list
# 查看运行日志
journalctl -u act_runner -f
# 监控资源使用
docker stats $(docker ps -q --filter name=act-)
多环境部署策略
graph TB
A[开发环境] --> B[自动触发<br>单元测试]
B --> C[代码审查]
C --> D[预发布环境]
D --> E[集成测试]
E --> F[生产部署]
F --> G[监控验证]
style A fill:#e1f5fe
style D fill:#fff3e0
style F fill:#f1f8e9
常见问题排查
Runner连接问题
# 检查网络连通性
curl -I https://your-gitea-domain.com
# 检查token有效性
act_runner verify --instance https://your-gitea-domain.com --token YOUR_TOKEN
# 查看详细日志
act_runner --log-level debug daemon
工作流执行失败
- 权限问题:检查Docker socket权限
- 资源不足:调整Runner的capacity配置
- 网络超时:增加fetch_timeout配置
性能优化建议
| 场景 | 优化策略 | 预期效果 |
|---|---|---|
| 大量小任务 | 增加Runner数量 | 并行处理提升 |
| 大文件传输 | 启用缓存机制 | 减少网络IO |
| 复杂构建 | 使用更强大的Runner节点 | 缩短构建时间 |
总结与展望
Gitea Actions为自托管Git服务提供了企业级的CI/CD能力,具备以下核心优势:
- 🛡️ 完全可控:所有组件部署在私有环境
- 💰 零成本:无需支付SaaS服务费用
- 🔒 数据安全:代码和构建产物不出内网
- ⚡ 高性能:局域网内高速传输
- 🔧 高度可定制:支持自定义Runner和Action
随着Gitea生态的不断完善,Actions功能将持续增强,未来将支持更多高级特性如:
- 更细粒度的权限控制
- 更强大的缓存机制
- 更丰富的可视化界面
现在就开始你的自托管CI/CD之旅,享受完全掌控的自动化开发体验!
下一步行动:
- 部署Gitea Runner到你的测试环境
- 创建第一个工作流配置文件
- 体验高效的自动化构建流程
记得点赞、收藏、关注三连,下期我们将深入探讨Gitea Actions的高级用法与性能调优技巧!
登录后查看全文
热门项目推荐
相关项目推荐
GLM-5智谱 AI 正式发布 GLM-5,旨在应对复杂系统工程和长时域智能体任务。Jinja00
GLM-5-w4a8GLM-5-w4a8基于混合专家架构,专为复杂系统工程与长周期智能体任务设计。支持单/多节点部署,适配Atlas 800T A3,采用w4a8量化技术,结合vLLM推理优化,高效平衡性能与精度,助力智能应用开发Jinja00
请把这个活动推给顶尖程序员😎本次活动专为懂行的顶尖程序员量身打造,聚焦AtomGit首发开源模型的实际应用与深度测评,拒绝大众化浅层体验,邀请具备扎实技术功底、开源经验或模型测评能力的顶尖开发者,深度参与模型体验、性能测评,通过发布技术帖子、提交测评报告、上传实践项目成果等形式,挖掘模型核心价值,共建AtomGit开源模型生态,彰显顶尖程序员的技术洞察力与实践能力。00
Kimi-K2.5Kimi K2.5 是一款开源的原生多模态智能体模型,它在 Kimi-K2-Base 的基础上,通过对约 15 万亿混合视觉和文本 tokens 进行持续预训练构建而成。该模型将视觉与语言理解、高级智能体能力、即时模式与思考模式,以及对话式与智能体范式无缝融合。Python00
MiniMax-M2.5MiniMax-M2.5开源模型,经数十万复杂环境强化训练,在代码生成、工具调用、办公自动化等经济价值任务中表现卓越。SWE-Bench Verified得分80.2%,Multi-SWE-Bench达51.3%,BrowseComp获76.3%。推理速度比M2.1快37%,与Claude Opus 4.6相当,每小时仅需0.3-1美元,成本仅为同类模型1/10-1/20,为智能应用开发提供高效经济选择。【此简介由AI生成】Python00
Qwen3.5Qwen3.5 昇腾 vLLM 部署教程。Qwen3.5 是 Qwen 系列最新的旗舰多模态模型,采用 MoE(混合专家)架构,在保持强大模型能力的同时显著降低了推理成本。00- RRing-2.5-1TRing-2.5-1T:全球首个基于混合线性注意力架构的开源万亿参数思考模型。Python00
项目优选
收起
deepin linux kernel
C
27
11
OpenHarmony documentation | OpenHarmony开发者文档
Dockerfile
567
3.83 K
🔥LeetCode solutions in any programming language | 多种编程语言实现 LeetCode、《剑指 Offer(第 2 版)》、《程序员面试金典(第 6 版)》题解
Java
68
20
Nop Platform 2.0是基于可逆计算理论实现的采用面向语言编程范式的新一代低代码开发平台,包含基于全新原理从零开始研发的GraphQL引擎、ORM引擎、工作流引擎、报表引擎、规则引擎、批处理引引擎等完整设计。nop-entropy是它的后端部分,采用java语言实现,可选择集成Spring框架或者Quarkus框架。中小企业可以免费商用
Java
12
1
暂无简介
Dart
798
197
🎉 (RuoYi)官方仓库 基于SpringBoot,Spring Security,JWT,Vue3 & Vite、Element Plus 的前后端分离权限管理系统
Vue
1.37 K
779
喝着茶写代码!最易用的自托管一站式代码托管平台,包含Git托管,代码审查,团队协作,软件包和CI/CD。
Go
23
0
openEuler内核是openEuler操作系统的核心,既是系统性能与稳定性的基石,也是连接处理器、设备与服务的桥梁。
C
349
200
Ascend Extension for PyTorch
Python
377
447
无需学习 Kubernetes 的容器平台,在 Kubernetes 上构建、部署、组装和管理应用,无需 K8s 专业知识,全流程图形化管理
Go
16
1