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 StartedRust0448
源启盛夏_AtomGit暑期开发者成长计划「源启盛夏」暑期校园开发者成长计划旨在激活校园开源力量,通过积分激励、认证扶持、资源倾斜等形式,引导高校组织和开发者完成「入驻 — 建项目 — 做贡献 — 获认证 — 得资源」的完整闭环。无论你是想带领社团入驻平台的组织者,还是希望用代码贡献证明自己的开发者,都能在这里找到属于你的成长路径。Markdown00
jiuwenswarmJiuwenSwarm 是一款基于openJiuwen开发的智能AI Agent,它能够将大语言模型的强大能力,通过你日常使用的各类通讯应用,直接延伸至你的指尖。Python0769
Hy3Hy3 是由腾讯混元团队研发的快慢思考融合的混合专家模型,总参数量 295B,激活参数 21B,MTP 层参数 3.8B。4 月底发布 Hy3 Preview 后,我们在 50 多个业务中获得了广泛的反馈,修复了各种体验问题,进一步提升了后训练的质量和规模。今天,我们发布 Hy3。它展现出显著强于同尺寸并比肩旗舰(参数规模往往是 Hy3 的 2~5 倍)开源模型的智能水平,显著提升了在各类产品和生产力任务中的实用价值。Python00
AscendNPU-IRAscendNPU-IR是基于MLIR(Multi-Level Intermediate Representation)构建的,面向昇腾亲和算子编译时使用的中间表示,提供昇腾完备表达能力,通过编译优化提升昇腾AI处理器计算效率,支持通过生态框架使能昇腾AI处理器与深度调优C++0312
DragonOSDragonOS is an operating system developed from scratch using Rust, with Linux compatibility. It is designed for **Serverless** scenarios. 使用Rust从0自研内核,具有Linux兼容性的操作系统,面向云计算Serverless场景而设计。Rust00
热门内容推荐
最新内容推荐
项目优选
收起
暂无描述
Markdown
827
5.49 K
openEuler内核是openEuler操作系统的核心,既是系统性能与稳定性的基石,也是连接处理器、设备与服务的桥梁。
C
494
518
本项目是CANN提供的神经网络类计算算子库,实现网络在NPU上加速计算。
C++
786
1.58 K
作为 Ascend for PyTorch 社区的核心组件,TorchNPU 是昇腾专为 PyTorch 打造的深度学习适配插件,使 PyTorch 框架能够直接调用昇腾 NPU,为开发者提供昇腾 AI 处理器的超强算力。
Python
803
1.14 K
本项目是CANN提供的transformer类大模型算子库,实现网络在NPU上加速计算。
C++
973
2.29 K
deepin linux kernel
C
32
16
AscendNPU-IR是基于MLIR(Multi-Level Intermediate Representation)构建的,面向昇腾亲和算子编译时使用的中间表示,提供昇腾完备表达能力,通过编译优化提升昇腾AI处理器计算效率,支持通过生态框架使能昇腾AI处理器与深度调优
C++
482
312
JiuwenSwarm 是一款基于openJiuwen开发的智能AI Agent,它能够将大语言模型的强大能力,通过你日常使用的各类通讯应用,直接延伸至你的指尖。
Python
3.02 K
769
CANNBot 是面向 CANN 开发的用于提升开发效率的系列智能体,本仓库为其提供可复用的 Skills 模块。
Markdown
1.26 K
811
CANN 学习中心仓,支持在线互动运行、边学边练,提供教程、示例与优化方案,一站式助力昇腾开发者快速上手。
Jupyter Notebook
648
287