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的高级用法与性能调优技巧!
登录后查看全文
热门项目推荐
相关项目推荐
atomcodeClaude Code 的开源替代方案。连接任意大模型,编辑代码,运行命令,自动验证 — 全自动执行。用 Rust 构建,极致性能。 | An open-source alternative to Claude Code. Connect any LLM, edit code, run commands, and verify changes — autonomously. Built in Rust for speed. Get StartedRust0207
cann-learning-hubCANN 学习中心仓,支持在线互动运行、边学边练,提供教程、示例与优化方案,一站式助力昇腾开发者快速上手。Jupyter Notebook0133
MinerUA high-quality tool for convert PDF to Markdown and JSON.一站式开源高质量数据提取工具,将PDF转换成Markdown和JSON格式。Python08
JoyAI-EchoJoyAI-Echo,这是一个独立的、仅用于推理的版本,旨在实现分钟级多镜头音视频生成。它采用了经过蒸馏的DMD生成器、配对的跨模态记忆以及故事级别的一致性。其性能的核心在于,一个跨模态视听记忆库能够在长达五分钟的视频中保持角色外观和语音音色的一致性。同时,一个训练后处理流程将基于记忆的强化学习与分布匹配蒸馏相结合,实现了7.5倍的速度提升,显著增强了视觉质量和对齐效果。00
wgai开箱即用的JAVAAI在线训练识别平台&OCR平台AI合集包含旦不仅限于(车牌识别、安全帽识别、抽烟识别、常用类物识别等) 图片和视频识别,可自主训练任意场景融合了AI图像识别opencv、yolo、ocr、esayAI内核识别;AI智能客服、AI语言模型、 无任何第三方API接口可定制化自主离线化部署并自主化行业化使用避免占用内存、GPU消耗训练与识别分开使用;Java05
tiny-universe《大模型白盒子构建指南》:一个全手搓的Tiny-UniverseJupyter Notebook03
热门内容推荐
最新内容推荐
项目优选
收起
deepin linux kernel
C
32
16
暂无描述
Dockerfile
772
5.05 K
本项目是CANN提供的transformer类大模型算子库,实现网络在NPU上加速计算。
C++
869
1.99 K
Ascend Extension for PyTorch
Python
748
931
本项目是CANN提供的神经网络类计算算子库,实现网络在NPU上加速计算。
C++
694
1.37 K
openEuler内核是openEuler操作系统的核心,既是系统性能与稳定性的基石,也是连接处理器、设备与服务的桥梁。
C
468
461
本仓库是 Flutter SDK 与 Flutter Engine 的 OpenHarmony 适配版本,由 CPF-Flutter 团队维护。开发者可使用熟悉的 Flutter 技术栈开发 OpenHarmony 应用,3.35.7 及以后的适配版本可基于本仓库源码构建支持 OpenHarmony 的 Flutter Engine。
Dart
1.03 K
268
昇腾LLM分布式训练框架
Python
181
225
本项目是CANN提供的数学类基础计算算子库,实现网络在NPU上加速计算。
C++
1.09 K
1.14 K
CANN 学习中心仓,支持在线互动运行、边学边练,提供教程、示例与优化方案,一站式助力昇腾开发者快速上手。
Jupyter Notebook
363
132