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的高级用法与性能调优技巧!
登录后查看全文
热门项目推荐
相关项目推荐
Kimi-K2.5Kimi K2.5 是一款开源的原生多模态智能体模型,它在 Kimi-K2-Base 的基础上,通过对约 15 万亿混合视觉和文本 tokens 进行持续预训练构建而成。该模型将视觉与语言理解、高级智能体能力、即时模式与思考模式,以及对话式与智能体范式无缝融合。Python00
GLM-4.7-FlashGLM-4.7-Flash 是一款 30B-A3B MoE 模型。作为 30B 级别中的佼佼者,GLM-4.7-Flash 为追求性能与效率平衡的轻量化部署提供了全新选择。Jinja00
VLOOKVLOOK™ 是优雅好用的 Typora/Markdown 主题包和增强插件。 VLOOK™ is an elegant and practical THEME PACKAGE × ENHANCEMENT PLUGIN for Typora/Markdown.Less00
PaddleOCR-VL-1.5PaddleOCR-VL-1.5 是 PaddleOCR-VL 的新一代进阶模型,在 OmniDocBench v1.5 上实现了 94.5% 的全新 state-of-the-art 准确率。 为了严格评估模型在真实物理畸变下的鲁棒性——包括扫描伪影、倾斜、扭曲、屏幕拍摄和光照变化——我们提出了 Real5-OmniDocBench 基准测试集。实验结果表明,该增强模型在新构建的基准测试集上达到了 SOTA 性能。此外,我们通过整合印章识别和文本检测识别(text spotting)任务扩展了模型的能力,同时保持 0.9B 的超紧凑 VLM 规模,具备高效率特性。Python00
KuiklyUI基于KMP技术的高性能、全平台开发框架,具备统一代码库、极致易用性和动态灵活性。 Provide a high-performance, full-platform development framework with unified codebase, ultimate ease of use, and dynamic flexibility. 注意:本仓库为Github仓库镜像,PR或Issue请移步至Github发起,感谢支持!Kotlin07
compass-metrics-modelMetrics model project for the OSS CompassPython00
最新内容推荐
终极Emoji表情配置指南:从config.yaml到一键部署全流程如何用Aider AI助手快速开发游戏:从Pong到2048的完整指南从崩溃到重生:Anki参数重置功能深度优化方案 RuoYi-Cloud-Plus 微服务通用权限管理系统技术文档 GoldenLayout 布局配置完全指南 Tencent Cloud IM Server SDK Java 技术文档 解决JumpServer v4.10.1版本Windows发布机部署失败问题 最完整2025版!SeedVR2模型家族(3B/7B)选型与性能优化指南2025微信机器人新范式:从消息自动回复到智能助理的进化之路3分钟搞定!团子翻译器接入Gemini模型超详细指南
项目优选
收起
deepin linux kernel
C
27
11
OpenHarmony documentation | OpenHarmony开发者文档
Dockerfile
525
3.72 K
Ascend Extension for PyTorch
Python
329
392
本项目是CANN提供的数学类基础计算算子库,实现网络在NPU上加速计算。
C++
878
582
openEuler内核是openEuler操作系统的核心,既是系统性能与稳定性的基石,也是连接处理器、设备与服务的桥梁。
C
336
164
暂无简介
Dart
765
189
Nop Platform 2.0是基于可逆计算理论实现的采用面向语言编程范式的新一代低代码开发平台,包含基于全新原理从零开始研发的GraphQL引擎、ORM引擎、工作流引擎、报表引擎、规则引擎、批处理引引擎等完整设计。nop-entropy是它的后端部分,采用java语言实现,可选择集成Spring框架或者Quarkus框架。中小企业可以免费商用
Java
12
1
🎉 (RuoYi)官方仓库 基于SpringBoot,Spring Security,JWT,Vue3 & Vite、Element Plus 的前后端分离权限管理系统
Vue
1.33 K
746
🔥LeetCode solutions in any programming language | 多种编程语言实现 LeetCode、《剑指 Offer(第 2 版)》、《程序员面试金典(第 6 版)》题解
Java
67
20
React Native鸿蒙化仓库
JavaScript
302
350