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
jiuwenclawJiuwenClaw 是一款基于openJiuwen开发的智能AI Agent,它能够将大语言模型的强大能力,通过你日常使用的各类通讯应用,直接延伸至你的指尖。Python0193- QQwen3.5-397B-A17BQwen3.5 实现了重大飞跃,整合了多模态学习、架构效率、强化学习规模以及全球可访问性等方面的突破性进展,旨在为开发者和企业赋予前所未有的能力与效率。Jinja00
AtomGit城市坐标计划AtomGit 城市坐标计划开启!让开源有坐标,让城市有星火。致力于与城市合伙人共同构建并长期运营一个健康、活跃的本地开发者生态。01
awesome-zig一个关于 Zig 优秀库及资源的协作列表。Makefile00
热门内容推荐
最新内容推荐
pi-mono自定义工具开发实战指南:从入门到精通3个实时风控价值:Flink CDC+ClickHouse在金融反欺诈的实时监测指南Docling 实用指南:从核心功能到配置实践自动化票务处理系统在高并发抢票场景中的技术实现:从手动抢购痛点到智能化解决方案OpenCore Legacy Patcher显卡驱动适配指南:让老Mac焕发新生7个维度掌握Avalonia:跨平台UI框架从入门到架构师Warp框架安装部署解决方案:从环境诊断到容器化实战指南突破移动瓶颈:kkFileView的5层适配架构与全场景实战指南革新智能交互:xiaozhi-esp32如何实现百元级AI对话机器人如何打造专属AI服务器?本地部署大模型的全流程实战指南
项目优选
收起
deepin linux kernel
C
27
12
OpenHarmony documentation | OpenHarmony开发者文档
Dockerfile
601
4.04 K
🔥LeetCode solutions in any programming language | 多种编程语言实现 LeetCode、《剑指 Offer(第 2 版)》、《程序员面试金典(第 6 版)》题解
Java
69
21
Ascend Extension for PyTorch
Python
441
531
AscendNPU-IR是基于MLIR(Multi-Level Intermediate Representation)构建的,面向昇腾亲和算子编译时使用的中间表示,提供昇腾完备表达能力,通过编译优化提升昇腾AI处理器计算效率,支持通过生态框架使能昇腾AI处理器与深度调优
C++
112
170
🎉 (RuoYi)官方仓库 基于SpringBoot,Spring Security,JWT,Vue3 & Vite、Element Plus 的前后端分离权限管理系统
Vue
1.46 K
825
本项目是CANN提供的数学类基础计算算子库,实现网络在NPU上加速计算。
C++
922
770
暂无简介
Dart
847
204
React Native鸿蒙化仓库
JavaScript
321
375
openGauss kernel ~ openGauss is an open source relational database management system
C++
174
249